-1

Lazy LoadingがEntity Framework Coreに実装されていない場合、Entity Framework Coreを使用する前に読み込まれていない場合にのみ、クラスからナビゲーションプロパティを読み込む方法を教えてください。例えば。このクラスエンティティフレームワークのコア、前にロードされていない場合にのみナビゲーションパラメータをロードする方法

class MyClass{ 
    // ... 
    IEnumerable<Child> Children {get;set;} 

    public int CountChildren(){ 
     return children.Count(); 
    } 
} 

私はChildreneager loading or explicit loadingを使用して、たとえば、以前にロードされた場合myinstance.CountChildren()を使用して子供をカウントすることができるだけになります。

しかし、Childrenナビゲーションプロパティが以前にロードされたかどうか確認したいと思います。そうでない場合は、強制的にロードしてください。これは何とか可能ですか?どうすればいい?

+0

怠け者でも積極的な読み込みでも、既に存在するコンテキストにオブジェクトを読み込まないようにしてください。あなたが接続されていないシナリオにいる場合、私は奇妙なNOT INステートメントを除いて何らかの方法があるのではないかと疑います。 – DevilSuichiro

答えて

2

子ナビゲーションプロパティが以前にロードされたかどうかを確認したいと思います。そうでない場合は、強制的にロードしてください。

変更トラッカーにはこの情報があります。 EG

 var user = db.Users.First(); 
     var groups = db.Entry(user).Collection(u => u.UserGroups); 

     if (!groups.IsLoaded) 
     { 
      groups.Load(); 
     } 
0

私はあなたがload()方法を使用する場合、それが以前にロードされなかったとき、それが唯一のデータベースからロードすることを知っていることができたいくつかのテストの後。

この場合、プロパティが既にロードされていて再度ロードされない場合は、オンデマンドでプロパティをロードできます。

関連する問題