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

Hxj.Data 交易機制初探:BeginTransaction、Commit/Rollback、支援 Stored Procedure 與 SQL

     編輯:關於ASP.NET

簡單實用的本地交易封裝

組件提供 DbTrans 封裝 ADO.NET 交易,不支援分散式交易(DTC)。

基本 using 寫法

using (DbTrans trans = DbSession.Default.BeginTransaction()) {
    DbSession.Default.Update(Products._.ProductName, "apple", Products._.ProductID == 1, trans);
    DbSession.Default.Update(Products._.ProductName, "egg", Products._.ProductID == 2, trans);
    trans.Commit(); // 必須明確提交
}

所有寫入方法(Insert/Update/Delete)皆有 DbTrans 多載。

Try-Catch 手動控制

DbTrans trans = DbSession.Default.BeginTransaction();
try {
    DbSession.Default.Update(..., trans);
    DbSession.Default.Update(..., trans);
    trans.Commit();
}
catch {
    trans.Rollback();
}
finally {
    trans.Close();
}

支援 Stored Procedure 與直接 SQL 交易

DbTrans trans = DbSession.Default.BeginTransaction();
DbSession.Default.FromProc("Ten Most Expensive Products").SetDbTransaction(trans).ToDataTable();
DbSession.Default.FromSql("UPDATE Products SET UnitPrice = UnitPrice * 1.1").SetDbTransaction(trans).Execute();
trans.Commit();

SetDbTransaction(trans) 將命令納入交易範圍。

指定隔離等級

DbTrans trans = DbSession.Default.BeginTransaction(IsolationLevel.ReadCommitted);
// 或 Serializable, RepeatableRead, ReadUncommitted 等

已知限制與改進方向

  • 僅支援單一連線本地交易,跨資料庫/跨伺服器需自行用 TransactionScope。
  • API 需手動傳遞 trans 參數,易漏傳導致部分操作落在交易外。
  • 未來版本計畫:TransactionScope 整合、環境交易自動感知、巢狀交易支援。

現階段適合單一資料庫、簡單業務邏輯的交易需求,代碼量極少、學習曲線平緩。

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