あなたの質問に答えるには、EFでのLazy LoadingとEagerの読み込みの背後にある基本的な考え方を理解する必要があります。
熱心読み込ん:
積極的なロードは、エンティティのタイプのクエリは、クエリの一部として関連するエンティティをロードするプロセスです。 Eagerの読み込みは、Includeメソッドを使用して行います。たとえば、下のクエリ は、ID 1と彼のプロフィールを持つユーザーを読み込みます。
db.Users.Include(x=>x.User_Profile).Where(z=>z.ID==1).ToList()
遅延読み込み:
遅延ロードエンティティのエンティティまたはコレクションが自動的にデータベースからエンティティ/エンティティを参照するプロパティにアクセスすることが初めてロードされるプロセスです。 POCOエンティティタイプを使用する場合、派生したプロキシタイプのインスタンスを作成し、仮想プロパティをオーバーライドしてロードフックを追加することにより、 遅延ロードを実現します。 たとえば、コードで定義されたUserエンティティクラスを使用する場合、Proflie/sナビゲーションプロパティに初めてアクセスするときに、関連するProfileがロードされます。記事のコレクションの
特定のナビゲーションプロパティの遅延ロードをオフに
- レイジーローディングは、投稿プロパティが非仮想作ることによってオフにすることができます。
は、すべてのエンティティのための遅延ロードをオフにし:
public class MyDbContext: DbContext
{
public MyDbContext:()
{
this.Configuration.LazyLoadingEnabled = false;
}
}
明示的なロード:
として明示的なロード定義される:オブジェクトはクエリによって返されたときに、関連するオブジェクトはありません同時にロードされます。デフォルトでは、ナビゲーションプロパティのLoadメソッドを使用して明示的に要求されるまでロードされません。
資源:
https://msdn.microsoft.com/en-us/data/jj574232.aspx
遅延読み込みが有効? –
どうすればわかりますか? – kamalpreet
あなたは 'Context.Configuration.LazyLoadingEnabled'のようなコンテキストの設定を通してそれをチェックすることができます。 'Context.Configuration.LazyLoadingEnabled = false;' –