【发布时间】:2014-09-03 02:35:42
【问题描述】:
这个问题来自另一个Simplify OrmLite with AutoQuery.
ServiceStack AutoQuery 允许我所有不同的 Get(AKindOfType dto) 共享相同的代码,如下所示:(我有很多模型,比如 Company,我的另外两个问题试图进一步简化代码)
// ====== Model.cs ========
[Route("/company/search")]
public class QueryableCompany : QueryBase<Company>
{
public int? Id { get; set; }
public string Company { get; set; }
public int? CompanyNo { get; set; }
public bool? Active { get; set; }
}
public class Company
{
[AutoIncrement]
public int id { get; set; }
public string company { get; set; }
public int companyNo { get; set; }
public bool active { get; set; }
}
// ====== Service.cs ========
public IAutoQuery AutoQuery { get; set; }
public object Get(QueryableCompanies dto)
{
var q = AutoQuery.CreateQuery(dto, Request.GetRequestParams());
var r = AutoQuery.Execute(dto, q);
return r.Results;
}
// ====== Global.asax.cs ========
public override void Configure(Container container)
{
//...
Plugins.Add(new AutoQueryFeature { MaxLimit = 100 });
//...
}
那么,根据上面的代码,我还有两个问题。
1) 由于我有很多请求 DTO,所以它们在 Get(QueryableXXX dto) 中的代码都是一样的;如何使用单个通用 Get() 方法返回所有不同类型的 DTO,例如:
public object Get<T>(T dto) where T : IQuery
{
var q = AutoQuery.CreateQuery(dto, Request.GetRequestParams());
return AutoQuery.Execute(dto, q).Results;
}
2) 在上面的 Company 示例中,QueryableCompany 类看起来与 Company 类非常相似,AutoQuery 是否可以为 Company 类的成员提供一些 Attributes,避免创建另一个类似的 QueryableCompany?
【问题讨论】:
标签: generics attributes servicestack ormlite-servicestack