2016-09-28 5 views
0

データベース初のEntity Frameworkモデルに対して遅延読み込みを有効にしました。この例では、StateテーブルとCityテーブルを使用します。ここで、Cityテーブルは(外部キーを介して接続された)Stateテーブルの子テーブルです。Entity Frameworkを使用して親データのみを選択し、子データを選択しない

次のクエリ使用時:

from State in DBEntity.State 
where State.StateId == 1 
select State 

を私は市のオブジェクトのリストが含まれている状態のオブジェクトを取得。上記のクエリを使用すると、このリストに値が設定されます。状況によっては、私は国のリストだけが必要で、都市は欲しくない。このような場合、子データ(都市)を取得すると、パフォーマンスが大幅に低下します。他の状況では、パフォーマンスが遅い場合でもすべての子データが必要です。

どのように私は次のことを達成することができます

  • が別の関数
に(子データ)だけ状態データではなく市のデータを取得していない1つの関数にすべての州や市のデータを取得します。
+0

モデル全体で遅延読み込みを無効にし、必要に応じて熱心な読み込み( 'Include()')を使用することをお勧めします。必要に応じて、個々のコンテキストインスタンスで遅延ロードを有効にすることができます。 –

答えて

1

仮想のCityプロパティを仮想にします。 EntityFrameworkTutorial.netパー

ナビゲーションプロパティは、パブリック仮想として定義する必要があります。プロパティが仮想として定義されていない場合、コンテキストは遅延読み込みを行いません。

これは、あなたがinclude()文を使用している場合Cityオブジェクトのリストを読み込むか、あなたのStateをロードした後にそれらにアクセスしようとします。

+0

これはデータベース優先アプローチの正解ですか?私は通常、モデルを更新したときに上書きされる可能性があるため、自動生成クラスは変更しません。自動生成されたStateクラスを変更してCityプロパティを仮想にすると、その変更はモデルの更新/リフレッシュで生き残りますか? –

関連する問題