objectdatasource和衝突檢測[譯]
建立乙個簡單的asp.net應用
建立乙個包含gridview和objectdatasource的web頁,後台資料庫用sql server express . 顯示的表為 customers table .
業務邏輯類
objectdatasource控制項連線到掌管crud的業務類customers. 在這裡你可以選擇讓objectdatasource 向customers業務類返回乙個實體類,而不是返回單獨的字段列表. 我選擇返回實體類,這裡是customer.
objectdatasource 控制項的設定如下:
<
asp:objectdatasourceid=
"objectdatasource1
"typename="
customers
"dataobjecttypename="
customer
"deletemethod="
deletecustomer
"insertmethod="
insertcustomer
"selectmethod="
getcustomers
"updatemethod="
updatecustomer
"runat="
server
">
...asp:objectdatasource
>
衝突檢測
objectdatasource 控制項有乙個屬性, 叫做衝突檢測. 可以設定再應用程式中如何處理併發衝突.
預設設定為overwritechanges, 這是最小化的併發衝突設定,使用於單使用者的情況或者後來者覆蓋是可以接受的. 如果覆蓋是不可接受的請選擇 compareallvalues, 這將給予你最大的靈活性,可以處理資料記錄發生的變化.
conflictdetection = overwrite changes
當我選擇overwritechanges的時候,我的update方法宣告如下:
objectdatasource控制項將會傳遞乙個單一的已更新的customer類的例項 . 這個例項將會傳遞到資料訪問層,最後乙個人所作的變化將會寫到資料庫中.
conflictdetection = compareallvalues
當我選擇 compareallvalues, 我的update方法將會如下宣告:
update 方法將會接受2個 customer classes - 乙個已經更新的例項,乙個包含原始資料的例項. 因此我們可以傳遞兩個例項到資料訪問層,以便生成指定原始資料資訊的where條件,確保不會丟失資料.
update 方法期望的原始實體類引數名稱為"original_customer" ,這可以通過設定屬性oldvaluesparameterformatstring來實現,例如我的objectdatasource控制項的設定如下:
<
asp:objectdatasourceid=
"objectdatasource1
"typename="
customers
"dataobjecttypename="
customer
"deletemethod="
deletecustomer
"insertmethod="
insertcustomer
"selectmethod="
getcustomers
"updatemethod="
updatecustomer
"oldvaluesparameterformatstring="
original_
"conflictdetection="
compareallvalues
"runat="
server
">
...asp:objectdatasource
>
結論:
objectdatasource 控制項提供了對資料併發更新的支援. 通過設定conflictdetection 和oldvaluesparameterformatstring 這兩個屬性,你既可以訪問包含已更新資料的實體類,也可以訪問包含原始資料的實體類,因此你可以有多種方法實現併發控制.
ObjectDataSource和衝突檢測 譯
建立乙個簡單的asp.net應用 建立乙個包含gridview和objectdatasource的web頁,後台資料庫用sql server express 顯示的表為customers table.業務邏輯類 objectdatasource控制項連線到掌管crud的業務類customers.在這...
Linux下IP衝突檢測方法
在windows系統中,如果有ip位址衝突,系統會彈出乙個對話方塊來報警。但是linux伺服器一般工作在文字模式下,而且核心對於這種錯誤沒有記錄,所有在 var log message裡也無從查起。google了一下,找到個小軟體叫ipwatchd,用這個小軟體就可以檢測到ip位址衝突。我配置伺服器...
PhysX學習記錄 七 衝突檢測
衝突碰撞是針對shape的碰撞。shape之間可能存在預設不碰撞檢測的情況。相互碰撞檢測方式如下圖 只要設定shapedesc.shapeflags nx trigger enable就可以使得該shape免予衝突檢測。衝突檢測是很耗效能的。每次的遍歷是很難實現的。所以有一些效能上的優化。首先能夠衝...