五、NHibernate之事務處理
阿新 • • 發佈:2019-02-06
一、事務概述
Ø定義:所謂事務是指其中的一個或多個操作要麼都執行要麼都不執行
Ø為什麼要使用:確保資料的安全和完整
Ø何時使用:在任何時候都要使用事務,即使是在讀取、查詢資料的時候,為什麼呢?因為你不清楚資料庫什麼時候操作失敗,如何恢復原來資料。而的事務可以幫助我們完成這些事情。
Ø注意事項:請結合using()和異常處理來一起使用
二、事務處理舉例
以下函式新增到DAL中,具體檔案自己決定:
//推薦事務都採用以下的模式
public bool Transactions()
{
//using語句會在using執行完後自動釋放在其括號中產生的物件
using (ITransaction tx = session.BeginTransaction())
{
//異常處理
try
{
//throw new Exception("模擬錯誤");//需要執行的程式,此處進行異常模擬
tx.Commit();//正確執行則提交
return true;
}
catch
{
tx.Rollback();//出錯回滾
return false;
}
}
}
以下函式新增到DAL.Test中,具體檔案自己決定:
[Test]
public void TransactionsTest()
{
bool result = _crudAcc.Transactions();
Assert.AreEqual(false, result);
}
我們可以通過如下圖的操作來檢視程式碼的覆蓋率:
結果如下:
淡藍色底的程式碼為執行到的程式碼,磚紅色底的程式碼為沒有執行到的程式碼,這是由TestDriven.Net提供的功能,看起來比較直觀方便。