1

つまり、SportsWagonというエンティティタイプと、SportsWagonが実装するインターフェイスICarがあります。IEnumerable<ICar> GetCars(Func<ICar, bool> filter)また、SportsWagonsから一致する車をフェッチし、それらを列挙可能な車として返すタイプの関数を作成しました。この関数は非常にシンプルで、呼び出すだけですMyContext.SportsWagons.Where(filter).Where(someAdditionalLogicInSomeCases);

私の問題は、SQLプロファイラーを使用すると、これによって生成されたクエリにWHERE句が完全に欠落しているように見えることです。さらに悪いことに、同じ車を複数回フェッチするループがある場合、それらは毎回新しいクエリを生成するように見えます。私は最初にEF4.3.1データベースを使用しています。それで、EFはインターフェースベースのFuncを変換してデータベースで正しいクエリを作成することができないのでしょうか、それとも私はまったくばかげた何かをしているのでしょうか?

4

1 に答える 1

0

関数も作成しました ...filterその ...
... .Where(filter)....

EF は関数を SQL に変換できません。ラムダを提供する必要があります。

確認するには、関数とクエリがどのように適合するかについて関連するコードを投稿してください。

于 2012-09-05T07:37:58.533 に答える