实体框架4工作单元/存储库WITHOUT .Query()Lambda

时间:2011-06-21 06:33:48

标签: linq entity-framework entity-framework-4 linq-to-entities linq-to-objects

我们已经看到了一些实现EF4存储库和工作单元模式的非常有用的方法(Reference 1Reference 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查询表达式语法?

理查德

1 个答案:

答案 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