我有這個特定的DAO,它繼承了通用DAO的方法 我想添加一個事務到這個代碼,以便回滾所有的變化,如果發生異常被發現使用事務回滾實體框架的變化
TDAO tDAO = new TDAO();
TDAO2 tDAO2 = new TDAO2();
//Get the DAO to delete from the database let's call them dDao and dDao2
//Start the Transaction
using (TransactionScope trans = new TransactionScope())
{
try
{
//Delete all SGC Associated switch
TDAO2.Delete(dDao);
//Delete switch
TDAO.Delete(dDao2);
//send notification
base.SendChangeNotification();
//Commit the Information Completing the Transaction
trans.Complete();
}
catch (UpdateException ex)//SQL exception
{
//Log the error
//Rollback the changes if there is an exception
throw new Exception(Resources.ErrorMessages.OperationNotPermited);
}
catch (Exception ex) //Other exception
{
//Log the error
throw new Exception(Resources.ErrorMessages.UndifenedError);
}
}
在Visual Studio中,轉到項目中的References圖標。右鍵單擊添加引用。然後搜索System.Transactions.dll。選擇它,點擊確定。然後嘗試重建您的項目。還要確保你在頂部有一個Using語句(C#)或Imports語句(VB),就像使用System.Transactions;
而變化在代碼中。謝謝
你想要回滾的是什麼?對數據庫的更改?或更改數據上下文?對於數據庫的更改 - 只需使用常規數據庫事務。對於數據上下文的更改 - 不要:只是*扔掉它*。 –
我想回滾對數據庫的更改。我怎樣才能做到這一點 ? – rjcossa
哦,只是爲了獲取更多信息,數據庫管理系統是SQL Server 2008 – rjcossa