1. 程式人生 > >五、NHibernate之事務處理

五、NHibernate之事務處理

一、事務概述

Ø定義:所謂事務是指其中的一個或多個操作要麼都執行要麼都不執行

Ø為什麼要使用:確保資料的安全和完整

Ø何時使用:在任何時候都要使用事務,即使是在讀取、查詢資料的時候,為什麼呢?因為你不清楚資料庫什麼時候操作失敗,如何恢復原來資料。而的事務可以幫助我們完成這些事情。

Ø注意事項:請結合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提供的功能,看起來比較直觀方便。