1

我们已经看到了实现EF4库和工作模式的单位(Reference 1Reference 2实体框架4单位工作/存储库,而不.Query()LAMBDA

所有的例子的一些非常有用的方法我看使用方法需要使用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; 

有没有一种方法可以在存储库方法中使用LINQ查询表达式语法,同时享受存储库和UoW的好处?

理查德

回答

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

+0

+1这就是我也是这么做的。它仍然启用lambda表达式,例如employeeRepository.Query()。Where(emp => emp.UserName == userName); –

+0

看起来不错。我知道存储库的讨论已经完成了。关于这个主题的有趣的2个讨论几乎同时发生:)我认为围绕这​​些主题进行如此多的讨论会突出EF4中的一些非常严重的弱点。 – Richard