2009-06-11 10 views
4

現在、多くのリンクされたオブジェクトで構成されるデータベースがあります。以下のオブジェクトと簡体エンティティのフレームワークMultiLevel Associationsの読み込み

:私はちょうどそのデータと1曲をしたいとき、これが原因となります、しかし

db.Song.include("Versions.Data").Include("Versions.Info").ToList(); 

を使用した場合

Song => Versions => Info 
      || 
      \/ 
     Data 

は今、私はこれらすべてのオブジェクト熱心な負荷をできることを理解しますすべての曲とすべての参照を読み込む。

のような簡単な方法があります:

db.Song.First().include("Versions.Data").Include("Versions.Info") 

それとも、私が本当に使用する必要があります:

Song.Versions.Load(); 
foreach(Version version in versions) 
{ 
    version.DataReference.Load(); 
    version.InfoReference.Load(); 
} 

あなたは、いくつかの関連するオブジェクトを持っている場合、それはなんとかですが、私は10のように持っていますが、サブオブジェクト自体もサブオブジェクトがあるオブジェクト...

もっと良い方法を教えてください。

答えて

1

あなたはこれを書い:

var song = (from s in db.Song.Include("Versions.Data").Include("Versions.Info") 
      where s.ID == 1 // i.e. some filter here 
      select s).First(); 

場合、これは実際には「インクルード」(あなたのwhere句で面白いことをすれば、それは失敗する可能性があります)このヒントをチェックアウトするために行っていない何らかの理由回避策:Tip 22 - How to make Include really Include

ホープこれは

アレックス

+0

しかし、最初にすべての曲と参照を読み込んで最初のファイルを選択しないのですか? IE:実際にはid = 1の曲の参照のみを読み込みますか? – Peterdk

+0

曲1への参照のみを読み込みます。 –

0

を助けまた

(VBで)のようにそれを書くことができます
関連する問題