背景:EF6とデータベースファーストを使用しています。EF6でdbContext.Saveを呼び出した後、ナビゲーションプロパティがリセットされる理由
私は困惑しているシナリオに遭遇しています。新しいオブジェクトを作成し、新しいオブジェクトでナビゲーションプロパティを設定し、SaveChangesを呼び出すと、ナビゲーションプロパティがリセットされます。 SaveChanges呼び出し後にナビゲーションプロパティを参照するコードの最初の行は、データベースからデータを再フェッチすることになります。これは期待された動作ですか、誰かがこのように動作する理由を説明できますか?私のシナリオのサンプルコードブロックは次のとおりです。
using (DbContext context = new DbContext) {
Foo foo = context.Foos.Create();
context.Foos.Add(foo);
...
Bar bar = context.Bars.Create();
context.Bars.Add(bar);
...
FooBar foobar = context.FooBars.Create();
context.FooBars.Add(foobar)
foobar.Foo = foo;
foobar.Bar = bar;
//foo.FooBars is already populated, so 1 is returned and no database query is executed.
int count = foo.FooBars.Count;
context.SaveChanges();
//This causes a new query against the database - Why?
count = foo.FooBars.Count;
}
優秀な説明、ありがとうございます! – cas4