私はちょうど大規模な*金髪の瞬間**を経験しましたが、それは私がEntityFrameworkで抱えている煩わしさを浮き彫りにしました。遅延読み込みを無効にしているので、アプリケーションをできるだけ高速に保つために必要なデータについて実際に考えなければなりません。
したがって、クエリ内でデータを返すには、次のInclude
メソッドを使用する必要があります。
var query = from item in context.Customers
.Include(x=> x.Orders)
select item
これは、階層のもう少し深い項目を選択するまでは問題ありません。すなわち:
Customer 1-* Orders *-1 Factory 1-1 Factory Type
私の知る限り、このすべてのデータを熱心に返す唯一の方法は、次のことを行うことです。
var query = from item in context.Customers
.Include("Orders.Factory.FactoryType")
select item
System.Data.Entity
上記では、最初の例のようにラムダを利用できません。ここで明らかな何かが欠けているかどうか、またはコレクションを介してナビゲーションプロパティに文字列宣言を使用することに固執しているかどうかを誰かが知っていますか?
コレクションがない場合は、次のように書くことができます。
.Include(x=> x.Order.OrderType.Factory.FactoryType) // No bother
しかし、Orders
コレクションがあるため、私が知る限り、子プロパティにステップスルーする方法はありません(、、FirstOrDefault
などSingleOrDefault
は機能しません)。
**それは言い換えです、私はたまたま金髪がとても好きです*