我想了解EF實體模型(該模型是由實體設計器創建的)的實體集實例之間的關係。基本上我最終得到1個邏輯事務,其中有2個實體的Repository類實例。在一個實例中成功提交數據(通過直接SSMS查詢確認到SQLServer)對其他實例不可見。這裏的大致流程:具有多個實體集實例的MVC實體框架狀態行爲
ARepository _aR = new ARepository();
A a = _aR.Find(id); //Find does something like: return db.ASet.Where(x => x.id == id);
b.BeginAcctBal = a.AcctBal;
brepo.AddTxn(params ... n); //Creates and saves n txns, and creates its own ARepository instance that updates its instance of AcctBal, which I can see happening in the DB)
A a = _aR.Find(id); //The hope is this gets the updated AcctBal after committed by AddTxn, but it doesn't).
b.EndAcctBal = a.AcctBal; // Still contains the starting balance value.
現在,如果我把ARepository _aR = new ARepository();
的AddTxn後,則隨後的代碼確實得到後AddTxn AcctBal值。
問題:
爲什麼db.ASet.Where(x => x.id == id);
沒有從DB重裝?實際上是否總是從創建_aR實例時的快照中讀取?
如果_aR是一個快照,有什麼方法可以重新加載它?
如果_aR是快照,如何維護事務完整性?更具體地說,我是否需要做一些事情來維護它,或者EF和MVC 1.0的組合對我來說是否是這種交易魔術?