2017-01-08 2 views
3

EFコアの使用1.1.0EFコアコレクションコレクションのコレクション

私自身がコレクションを持つコレクションを持つモデルを持っています。今

public class A { 
    public string Ay {get;set;}  
    public List<B> Bees {get;set;} 
} 

public class B { 
    public string Be {get;set;} 
    public List<C> Seas {get;set;} 
} 

public class C { 
    public string See {get;set;} 
    public bool InDark {get;set;} 
    public List<D> Sigh {get;set;} 
} 

.. Aは巨大であり、それはロードされませんので、私は、Bを気にしない時間の99%。今度は、私はすでにアップロードされている、私は我々が遅延ロードを持っていないB.気にするために、1%が発生したとしましょう

context.A.Include(a=>a.Bees).ThenInclude(b=>b.Seas).ThenInclude(c=>c.Sigh)... 

:私はそれをロードしなかった場合、それはようなものになるだろうしかし、最後のリリースでは明示的な読み込みが行われました。驚くばかり。

context.Entry(A).Collection(a=>a.Bees).Load(); 

B内に追加のコレクションを含める方法がないようですか?私は選択肢がありますが、Aと一緒にAをリロードすることはできますか?その結果を含む。

+0

? –

答えて

5

幸運にもオプションがあります。直接Loadを呼び出す代わりにQueryメソッドを使用して、好きなだけInclude/ThenIncludeを適用することができます。あなたのサンプルについて

、それはこのようなものになるだろう:あなたはそれを試してみました、あなたが照会可能 のインスタンスを作成し、ToListメソッドメソッドを呼び出すために前に含めるとThenIncludeのための呼び出しを追加することができます

context.Entry(A).Collection(a => a.Bees) 
    .Query() 
    .Include(b => b.Seas).ThenInclude(c => c.Sigh)... 
    .Load(); 
+1

私は実際にこれを忘れていた、私に思い出させるために感謝:)それはまたEF6で働いた。 –

+0

ありがとう..これはトリックでした。私は彼らが後でより早く怠惰な読み込みをすることを望んでいましたが、その間に、この種のことは私のリポジトリに自分の怠け者のパターンを作ることができます。 – imukai

+0

こんにちは@Gert、あなたは何かを忘れることはできません:)乾杯とHNY! –

関連する問題