所以我有一个名为SportsWagon的实体类型和一个SportsWagon实现的接口ICar。我还创建了一个IEnumerable<ICar> GetCars(Func<ICar, bool> filter)
类型的函数,它从SportsWagons中获取匹配的汽车并将它们作为可枚举的汽车返回。此功能非常简单,只能调用MyContext.SportsWagons.Where(filter).Where(someAdditionalLogicInSomeCases);
我的问题是,使用SQL事件探查器,由此生成的查询似乎完全缺少WHERE子句。更糟糕的是,如果我有一个多次获取相同汽车的循环,它们似乎每次都会生成一个新的查询。我先使用EF 4.3.1数据库。那么EF就是无法将基于接口的Func转换为使用数据库创建正确的查询,或者我只是在做其他完全愚蠢的事情?
答案 0 :(得分:0)
我还创建了一个函数...
filter
... ... ...Where(filter).
...
EF无法将函数转换为SQL。你必须提供一个lambda。
要确保,请发布相关代码,了解函数和查询如何组合在一起。