C# 使用接口抽象实体是否会破坏where子句的使用?

C# 使用接口抽象实体是否会破坏where子句的使用?,c#,entity-framework,C#,Entity Framework,因此,我有一个名为SportsWagon的entitytype和一个SportsWagon实现的接口ICar。我还创建了一个类型为IEnumerable GetCars(Func filter)的函数,该函数从跑车中获取匹配的汽车,并将其作为可枚举的汽车返回。这个函数非常简单,只调用MyContext.SportsWagons.Where(filter).Where(someAdditionalLogicinMecases) 我的问题是,使用SQL Profiler,由此生成的查询似乎完全缺少W

因此,我有一个名为SportsWagon的entitytype和一个SportsWagon实现的接口ICar。我还创建了一个类型为
IEnumerable GetCars(Func filter)
的函数,该函数从跑车中获取匹配的汽车,并将其作为可枚举的汽车返回。这个函数非常简单,只调用
MyContext.SportsWagons.Where(filter).Where(someAdditionalLogicinMecases)

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

我还创建了一个函数<代码>过滤器
那个…
..
.Where(过滤器)。

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


为确保这一点,请发布函数和查询如何配合的相关代码

嗯,很有趣。实际上,我从来没有费心去弄清楚表达式和函数之间的区别。但事实证明,在我的例子中,将参数更改为前一个就足够了。因此,虽然从技术上讲,你的回答并不能解决我的问题,但你的回答确实引导我找到了解决办法。谢谢你!