我们已经看到了一些实现EF4存储库和工作单元模式的非常有用的方法(参考文献1,参考文献2)
我看到的所有例子都使用了需要使用LINQ表达式语法的方法,例如:
IEnumerable<T> Query(Expression<Func<T, bool>> filter)
var employees = employeeRepository.Query(emp => emp.Username == userName);
但我想使用LINQ查询表达式语法,例如:
from emp in context.Employees select emp where emp.Username == userName;
有没有一种方法可以享受存储库和UoW的好处,同时能够在我的存储库方法中使用LINQ查询表达式语法?
Richard
是,但必须公开IQueryable<T>
:
IQueryable<T> Query();
之后,您可以使用以下代码:
var query = from emp in EmployeeRepository.Query()
where emp.Username == userName
select emp;
昨天讨论了方法之间的差异。此外,存储库和工作单元的整个概念也被讨论了很多次,包括为什么要使用它们以及您可能会遇到什么问题。