DB に Person と Occupation テーブルがあります。Person を作成すると、デフォルトの OccupationId は null です。
私が人物を作成し、その ID が 11 であるとしましょう。また、ダイバーという職業があり、その ID は 53 です。次に、次のことを行います。
using (var context = new DbEntities())
{
person.OccupationId; //currently null
person.Occupation; //currently null
var person = context.People.First(x => x.Id == 11);
person.OccupationId=53;
context.SaveChanges();
var occupation = person.Occupation.Description; //Exception: Occupation is null
}
職業は最初は null で、保存後に新しい職業が遅延ロードされなかったため、コードは最後の行で失敗します。このコードを実行する前にその人が職業を持っていて、古い職業が遅延ロードされていた場合、保存後に新しい職業が表示されます。
言い換えれば、その人が最初に用務員の職業を持っていた場合、これはうまくいくでしょう:
using (var context = new DbEntities())
{
var person = context.People.First(x => x.Id == 11);
var occupation = person.Occupation.Description; //this would say Janitor
person.OccupationId=53;
context.SaveChanges();
var occupation = person.Occupation.Description; //This would say Diver
}
最初の職業がnullの場合、保存後に新しい職業を遅延ロードする方法はありますか?