首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 2.0 數據教程(四十一):實作開放式並發控制

     編輯:關於ASP.NET

返回 ASP.NET 2.0 數據教程目錄

導言

對於可能有多用戶同時更新或刪除數據的 Web 應用程式,存在用戶修改覆蓋他人修改的風險。設計時選擇適當的並發控制策略至關重要。在 實現開放式並發 中已討論三種策略:

  1. 不處理 — 若並發用戶修改同一記錄,最後提交者生效(預設行為)
  2. 開放式並發 — 假定衝突僅偶發;發生時告知用戶修改無法儲存,因他人已修改同一記錄
  3. 保守式並發 — 假定衝突頻繁;用戶開始編輯時鎖定記錄,防止他人編輯或刪除,直至完成提交

迄今教程皆採用預設策略(最後寫入者勝出)。本章將學習實作開放式並發。

第一步:理解開放式並發運作機制

開放式並發確保記錄在更新或刪除時,與開始編輯時的狀態一致。例如:用戶點擊 DataList 編輯按鈕時,記錄原始值從資料庫讀取並顯示於 TextBox 等控制項。這些原始值需被保存。隨後用戶完成修改點擊更新,原始值與新值一併送至 BLL、DAL。DAL 發出 SQL 陳述式,僅更新資料庫中值仍與原始值一致的記錄。圖 1 描述此事件序列。

圖 1:更新或刪除成功需原始值與資料庫一致

圖 1:為了更新或刪除能夠成功,原始值必須與資料庫中相應的值一致

實作方式

實現開放式並發有多種方法(參考 Peter A. Bromberg 文章 Optmistic Concurrency Updating Logic)。ADO.NET 型別化 DataSet 提供勾選核取方塊即可啟用的方案:在 TableAdapter 的 Update 與 Delete 陳述式後附加比較所有原始值的 WHERE 子句。我們在 實現開放式並發 中已建立 NorthwindOptimisticConcurrency 型別化 DataSet 與 ProductsOptimisticConcurrencyBLL 類別。

注意: 繼續前請閱讀 實現開放式並發,了解開放式並發運作細節與 BLL/DAL 實作方式。

第二步:建立可編輯與刪除的 DataList

使用 DataList 實作開放式並發需保存原始值(更新/刪除時的值),並連同新值傳至 BLL。首先建立可編輯、可刪除的 DataList,列出產品並允許修改名稱與價格。

開啟 EditDeleteDataList 資料夾下的 OptimisticConcurrency.aspx,拖曳 DataList 並設 ID 為 Products。透過智慧標籤建立名為 ProductsDataSource 的 ObjectDataSource,以 ProductsBLL 類別的 GetProducts() 方法設定。在 UPDATE、INSERT、DELETE 標籤中選擇 (None)。

圖 2:UPDATE、INSERT、DELETE 標籤選擇 (None)

圖 2:在 UPDATE、INSERT、DELETE 標籤裡選擇 (None)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved