使用接口抽象实体会以某种方式破坏where子句的使用吗?

时间:2012-09-05 07:29:43

标签: c# entity-framework

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

1 个答案:

答案 0 :(得分:0)

  

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

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

要确保,请发布相关代码,了解函数和查询如何组合在一起。