如何在Entity Framework对象中使用LINQ到实体的谓词
- 论坛
- 如何在Entity Framework对象中使用LINQ到实体的谓词
21 浏览
如何在Entity Framework对象中使用LINQ到实体的谓词
我在我的数据访问层中使用LINQ to Entities来处理Entity Framework对象。
我的目标是尽可能地从数据库中筛选数据,而不将筛选逻辑应用于内存中的结果。
为了达到这个目的,业务逻辑层向数据访问层传递了一个谓词。
我的意思是
Func
因此,如果我直接使用这个谓词,比如
public IQueryableGetAllMatchedEntities(Func isMatched) { return qry = _Context.MyEntities.Where(x => isMatched(x)); }
我会得到异常
[System.NotSupportedException] --- {"不支持LINQ to Entities中的LINQ表达式节点类型'Invoke'。"}
在这个问题中的解决方案建议使用LINQKit库中的AsExpandable()方法。
但是,再次使用
public IQueryableGetAllMatchedEntities(Func isMatched) { return qry = _Context.MyEntities.AsExpandable().Where(x => isMatched(x)); }
我会得到异常
无法将类型为'System.Linq.Expressions.FieldExpression'的对象转换为类型'System.Linq.Expressions.LambdaExpression'
有没有办法在LINQ to Entities查询中使用谓词来正确地将其转换为SQL语句。
谢谢。