いいえ、LazyLoadingEnabled
無効は「EagerLoadingEnabled」を意味しません。それは、「遅延読み込みも有効になっておらず、明示的に要求された読み込みのみです」です。EF コンテキストが自動的に熱心な読み込みを行うことはありません。エンティティと大規模なデータベースの間の多くの関連付けで何が起こるか考えてみてください。
メソッドを使用してローカル エンティティのみにアクセスしない限り、すべてをコンテキストにプリロードしてもあまりメリットはありません。DbSet.Local
またはでローカル エンティティにアクセスできますDbSet.Find
。
DbSet
(like ) にアクセスするだけで、context.Customers
とにかくデータベース クエリが実行されます。遅延読み込みが無効になっている場合、ナビゲーション プロパティにローカル エンティティを使用できますが (リレーションシップ フィックスアップと呼ばれます)、それ以外の場合は、ナビゲーション プロパティにアクセスするとデータベース クエリも発生します。
コンテキストを使用してデータベースからオブジェクト グラフを生成し、コンテキストの外部にキャッシュする必要があるようです。データを読み取り専用でフェッチする場合は、AsNoTracking
拡張メソッドを使用することができます。(のようにcontext.Customers.AsNoTracking()
)。