我们已经看到了一些实现EF4存储库和工作单元模式的非常有用的方法(Reference 1,Reference 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查询表达式语法?
理查德
答案 0 :(得分:2)
是的,但您必须公开IQueryable<T>
:
IQueryable<T> Query();
之后,您可以使用以下代码:
var query = from emp in EmployeeRepository.Query()
where emp.Username == userName
select emp;
昨天讨论了difference between approaches。此外,还多次讨论了存储库和工作单元的整个概念 - 包括why to use them and what problems you can expect。