3つのエンティティが3つのDBテーブルに基づいています(リレーションシップの下のカーディナリティ)。Entity Framework - ナビゲーションパス内のオブジェクトをスキップする
Pupil - SchoolClass - ClassType
N:1 1:1
私は生徒のリストを取得し、そのスカラプロパティGrade
を更新したいです。 グレードは、生徒が受講するクラスの種類によって異なります。だから私はまた、各瞳孔のClassTypeが必要です。
これは私が何をすべきかです:
var pupils = from pupil in db.Pupils.Include("SchoolClass.ClassType")
select pupil;
foreach(Pupil p in pupils)
p.Grade *= p.SchoolClass.ClassType.GradingFactor;
これに伴う問題はSchoolClassが(+外部キーのID)で満たされたすべてのスカラプロパティで、コンテキストにロードされていることです。
瞳孔とClassTypeエンティティの間でオブジェクトをスキップする方法はありますか?つまり、SchoolClassのClassTypeナビゲーションプロパティのみをロードすることですか?
インクルードなしの瞳孔の必要な数をロードするのは20 msで、インクルードすると250 msでした。これを最適化できるかどうか疑問に思っていますか?
に参加するには1保存(あなたの仕様に応じて)1:
別optimalisationが彼らの関係が1であるので、一緒にSchoolClassとするClassTypeをマージするだろうか? –
申し訳ありません、はい、私のコードを修正しました – Polity