【发布时间】:2017-05-12 08:51:21
【问题描述】:
在实现 UOW 和存储库模式之前,我曾经创建条件查询并从我的服务层返回搜索结果:
例如:
`
private IQueryable<IssueSearchResult> GetIssuesQuery() {
var query = (from iss in Dbcontext.Issues
join pr in Dbcontext.PurchaseRequisitions on iss.PrId equals pr.PrId
where iss.IssueDate>=SearchCriteria.FromDate && iss.IssueDate<=SearchCriteria.ToDate
select new IssueSearchResult()
{
IssueId = iss.IssueId,
IssueNo = iss.IssueNumber,
IssueDate = iss.IssueDate,
PrNo = pr.DocumentNumber,
CreatedByName = iss.User.FullName
});
// if(condition){
// query = query.where(etc);
//}
return query.OrderBy(x => x.IssueId);
}
public async Task<List<IssueSearchResult>> GetAsyncIssues() {
List<IssueSearchResult> issues = new List<IssueSearchResult>();
try {
issues = await GetIssuesQuery().ToListAsync();
}
catch (DataException) {
throw;
}
return issues;
}
现在我无法弄清楚如何使用 UOW 和存储库模式做同样的事情,因为我无法直接查询实体,而且从存储库返回 iqueryable 是不好的做法。
我检查了许多 SO 帖子,似乎找不到解决方案。
这是否意味着我应该完全放弃存储库模式?
`
【问题讨论】:
标签: asp.net-mvc repository-pattern