所以我有一个名为 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 以使用数据库创建正确的查询,还是我只是在做其他完全愚蠢的事情?