0

コンテキストの SaveChanges() メソッドが呼び出されると、変更の反対側の関係が自動的に更新されます。

たとえば、littleJohnny を含む生徒の仮想 ICollection を持つ教師 mrX があったとします。

mrX.Students.Remove(littleJohnny);
Debug.Assert(littleJohnny.Teacher!=null); //assert should pass
context.SaveChanges();
Debug.Assert(littleJohnny.Teacher==null); //assert should pass

mrX.Students.Add(littleJohnny);
context.SaveChanges();//revert to previous state

littleJohnny.Teacher=null;
Debug.Assert(mrX.Students.Contains(littleJohnny)); //assert should pass
context.SaveChanges();
Debug.Assert(!mrX.Students.Contains(littleJohnny)); //assert should pass
  1. Entity Framework 4.3 および 5.0 のデータベースにデータを保存せずに、このような関係を更新する方法はありますか?

  2. 別のシナリオでは、上記のエンティティにマップする ViewModel がある場合、この EF の動作をコピーできる簡単な方法はありますか?つまり、関係を追跡し、メソッドの呼び出し時に関係を更新しますか?

4

1 に答える 1

1

電話してみるcontext.ChangeTracker.DetectChanges()

それが機能しない場合は、関連するエンティティが正しく初期化されていません

于 2013-02-12T12:31:08.547 に答える