1

所以我有一个名为 SportsWagon 的实体类型和一个由 SportsWagon 实现的接口 ICar。我还创建了一个类型函数,IEnumerable<ICar> GetCars(Func<ICar, bool> filter)它从 SportsWagons 中获取匹配的汽车并将它们作为可枚举的汽车返回。这个函数很简单,只调用MyContext.SportsWagons.Where(filter).Where(someAdditionalLogicInSomeCases);

我的问题是,使用 SQL Profiler,由此生成的查询似乎完全缺少 WHERE 子句。更糟糕的是,如果我有一个循环多次获取相同的汽车,它们似乎每次都会生成一个新查询。我首先使用的是 EF 4.3.1 数据库。那么 EF 只是无法翻译基于接口的 Func 以使用数据库创建正确的查询,还是我只是在做其他完全愚蠢的事情?

4

1 回答 1

0

我还创建了一个函数... filter...
... .Where(filter)....

EF 无法将函数转换为 SQL。您必须提供一个 lambda。

为确保,请发布有关函数和查询如何组合在一起的相关代码。

于 2012-09-05T07:37:58.533 回答