ObjectDataSource和衝突檢測 譯

2021-04-06 16:55:23 字數 2134 閱讀 7081

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免予衝突檢測。衝突檢測是很耗效能的。每次的遍歷是很難實現的。所以有一些效能上的優化。首先能夠衝...