我知道的解決方案,以實現在.NET C#SQL Server事務與「使用」關鍵字,並用這樣的代碼:什麼是傳遞一個SQL Server事務作爲參數的最佳方式
InsertDetails()
{
using (TransactionScope ts = new TransactionScope())
{
InsertName();//SQL functions to insert name into name table
Insertaddress();//SQL functions to insert address into address table
InsertPhoneNo();//SQL functions to insert phone number into contact table
ts.Complete();
}
}
但是舉例來說,我希望將sql服務器事務作爲參數傳遞給不同的數據庫查詢的許多不同函數,而無需使用using語句示例。
在調用代碼路徑中的所有函數後,我想調用提交數據,如果出現問題,則執行回滾。
僞代碼看起來像這樣
InsertDetails()
{
var transaction = new Transaction();
var sqlcon = new SqlConnection();
InsertName(transaction, sqlcon);//SQL functions to insert name into name table
Insertaddress(transaction, sqlcon);//SQL functions to insert address into address table
InsertPhoneNo(transaction, sqlcon);//code to insert phone no into contact table
try
{
ts.commit();
}
catch(Exception ex)
{
ts.rollback();
}
}
什麼阻止你這麼做? (當然,除了重新發明輪子) – Steve
那麼使用語法更安全以及將事務傳遞給方法的目的是什麼?它應該是透明的 – MickyD