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

Contoso University 教學 (七):並發衝突處理與樂觀鎖實作

     編輯:關於ASP.NET

並發衝突:使用者 A 讀取實體 → 使用者 B 修改並儲存 → 使用者 A 儲存覆蓋 B 的修改。EF 支援樂觀並發控制。

實作方式

  1. 實體新增 [Timestamp] 屬性 (byte[]),資料庫對應 rowversion
  2. EF 自動在 UPDATE WHERE 條件加入原始 Timestamp 值
  3. 衝突時拋出 DbUpdateConcurrencyException

Controller 處理流程

try { context.SaveChanges(); }
catch (DbUpdateConcurrencyException ex) {
    var entry = ex.Entries.Single();
    var clientValues = (Department)entry.Entity;
    var databaseEntry = entry.GetDatabaseValues();
    // 比較 clientValues 與 databaseEntry,決定保留/合併/拋錯
}

UI 回饋

  • Index 頁面顯示並發衝突警示
  • Delete/Edit 頁面顯示資料庫最新值讓使用者確認

樂觀鎖不鎖定資源、高併發效能佳,適合 Web 應用常見「讀多寫少」場景。

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