web-dev-qa-db-ja.com

ラムダ式でEntity Framework 4に含めるを使用する

私はこの問題を克服する方法について多くの記事を見てきましたが、それらはすべてCTP4に関連しています。または、独自の拡張メソッドを追加しています。

Include内でラムダ式を使用する「公式の」EF4インクルード方法はありますか(第1レベルの関係と第2レベル以上の両方の場合)、または最終的にRTM?

それがあります-私のコードでラムダ式を使用すると(#system.data.entityと#system.data.linqで)まだ私にそれができるので、それを行う方法を学ぶことができてうれしいです:

ラムダ式をデリゲート型ではないため、「string」型に変換できません:

var customers = from c in
context.Customers.Include(c=>c.Phone)
85
Dani

RTM Entity Framework 4.1のバージョンには、実際には[拡張メソッドEntityFramework.dllファイル。Include関数を使用してラムダを積極的にロードします。プロジェクトにDLLを含めるだけで、次のようなコードを記述できるはずです。

var princesses1 = context.Princesses.Include(p => p.Unicorns).ToList();

System.Data.Entity名前空間を含めるために、Import/Usingステートメントを忘れずに追加してください。そうしないと、コンパイラは拡張メソッドを見つけることができません。例えば:

using System.Data.Entity;

詳細については、この ADO.NETチームブログ の記事を参照してください。

215
cecilphillip

これは質問に暗示されていますが、.Includeでラムダを使用できないという同じ問題を抱えている他の人のために、これがあることを確認してください:

using System.Data.Entity;
86
AaronLS

現時点では、RTM=のラムダ式でのインクルードの公式サポートはありません。 this を使用しています。

CTP4について話すときは、Entity Framework Featureを意味します。 EF4よりも新しいAPIです。主にCode Firstと他のいくつかの改善が含まれています。

5
Ladislav Mrnka