2013-02-12 76 views
0

當對上下文的SaveChanges()方法進行調用時,更改另一側的關係會自動更新。在不使用SaveChanges的情況下更新一對多關係

舉例來說,如果我有一個老師MRX與學生的虛擬的ICollection包括littleJohnny

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. 有什麼辦法沒有實體的數據保存到數據庫中框架4.3更新這些關係, 5.0?

  2. 在另一種情況下,如果我有一個映射到上述實體的ViewModel,是否有一種簡單的方法可以複製此EF行爲 - >即,在調用方法時跟蹤關係並更新關係?

+0

夫婦的問題:1,你使用EF代碼優先? 2.當你使用ViewModel時,你在說WPF還是Silverlight? – 2013-02-12 03:00:52

+0

對不起 - 應該指定,是的,我先使用代碼。至於視圖模型,我主要使用mvvm和WPF,但實際上b視圖模型我指的是從實體映射的東西,比如使用Automapper到POCO – Brent 2013-02-12 04:39:41

回答

1

嘗試調用context.ChangeTracker.DetectChanges()

如果不工作,然後你的相關實體尚未正確初始化