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