增加刪除ADO.NET選項解釋
數(shù)據(jù)集使這項工作很難完成。你們支持這一點嗎,ADO.NET選項:對象數(shù)據(jù)類型支持當(dāng)前處于評估期。在.NET中似乎沒有快捷的方式來完成這項任務(wù)。假如它達到臨界質(zhì)量,我們將支持它。
Refresh的第一個參數(shù)值得注意一下,ADO.NET選項是一個枚舉值,有兩個選項:StoreWins或者是ClientWins。如果是StoreWins,那么,Refresh以后,product2的值將與數(shù)據(jù)庫里的對應(yīng)記錄的值一致(修改會丟失);而如果ClientWins,則product2的值保持,并且提交以后,會把context提交的修改覆蓋。其實,這兩種方法均不完美,總會導(dǎo)致一部分修改丟失。
但是,這總比在不知情的情況下的覆蓋要好。 另外,需要說明,上面的方法,只是對并發(fā)沖突的一種模擬,這樣的模式,在處理并發(fā)沖突時會有問題。一般的處理方法是,當(dāng)檢測到并發(fā)沖突時,提示用戶會重新從數(shù)據(jù)庫載入數(shù)據(jù),然后,ADO.NET選項讓用戶在新數(shù)據(jù)的情況下重新修改后再次提交,直到不再有并發(fā)沖突發(fā)生。#t#
我們已經(jīng)知道如何增加、更新和刪除實體記錄,并將更改數(shù)據(jù)庫記錄。Entity Framework 通過Object Context 控制的ObjectStateManager 對象來跟蹤變更,ObjectStateManager 將跟蹤所有對實體對象的變更,在調(diào)用SaveChanges() 方法時,執(zhí)行相應(yīng)的T-SQL腳本。
ObjectStateManager比LINQ to SQL中DataContext 的變更跟蹤功能更先進。下面,我們詳細了解ADO.NET選項如何顯示有用的變更跟蹤信息。