[英]A transaction problem while executing a C# code
在M代碼中,我收到一個錯誤,“此SqlTransaction已完成;它不再可用。” 生成此代碼的代碼行是sqlTransaction
MSSqlConnectionHandler.CommitTransaction();
這個CommitTransaction函數是
public static void CommitTransaction()
{
try
{
_theTran.Commit();
}
catch (Exception Ex)
{
try
{
_theTran.Rollback();
}
catch (Exception InnerEx)
{
throw InnerEx;
}
throw Ex;
}
}
但是,我注釋掉了這個MSSqlConnectionHandler.CommitTransaction(); 行,然后沒有發生錯誤,但也沒有保存數據。 出了什么問題,我應該在這里提供什么以使其更清楚? Thanx提前
該錯誤表明事務正在代碼中的其他位置提交, _theTran
是一個可以在其他地方使用和提交的實例變量嗎?
可能性是交易所在的連接已關閉。 如果是這樣的話,那就叫:
_theTran.Commit();
會發生錯誤。
無論誰打電話
CommitTransaction
應該在提交之前做一些檢查,比如這樣的事情:
if (conn.State == ConnectionState.Open)
{
if (_theTran != null)
{
CommitTransaction();
}
conn.Close();
}
就異常處理而言,異常處理程序除了重新拋出之外什么都不做。 如果在提交時發生異常,則嘗試回滾並始終拋出。 我認為你不需要內在的嘗試。
try
{
_theTran.Commit();
}
catch (Exception)
{
_theTran.Rollback();
throw;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.