1
我的要求是創建臨時表,然後執行一個存儲過程,它將行插入臨時表中,然後刪除臨時表。 但是,如果在執行此操作時發生錯誤,我想始終在臨時表中刪除臨時表。我知道企業庫存管理連接,無論如何連接關閉後,表將被丟棄。然而,只是想看看是否可以使用Try和Finally塊來做到這一點。 同時支持Sybase和MS Sql。 因此,對於如:DBTransaction和企業庫
string preUploadSql = "create table #CHANGES (Id numeric(18) identity not null)";
string postUploadSql = "drop table #CHANGES";
bCommand.CommandText = preUploadSql + "; " exec sp_update ;";
DbConnection dbConnection = DataAccessHelper.CreateConnection();
if (dbConnection.State != ConnectionState.Open)
{
dbConnection.Open();
}
DbTransaction dbTransaction = dbConnection.BeginTransaction();
try
{
DataAccessHelper.ExecuteNonQuery(dbCommand, dbTransaction);
}
finally
{
dbCommand.CommandText = postUploadSql;
DataAccessHelper.ExecuteNonQuery(dbCommand, dbTransaction);
dbTransaction.Commit();
if (dbConnection.State == ConnectionState.Open)
{
dbConnection.Close();
}
}
是這樣的可能,當我嘗試這一點,如果有錯誤,在最後塊dbtransaction似乎沒有訪問臨時表,讓我想到當出現錯誤時,事務範圍超出上下文或類似的範圍。 任何想法? 如何最好地處理這個問題?
+1使用DbTransaction的示例 – Liam 2012-10-02 09:19:24