4
我在創建了一段代碼之後,我嘗試從事務中的c#發出一個異步SQL調用,例如我可能正在更新或刪除表。ExecuteNonQueryAsync並在SQL事務中提交
這是我到目前爲止,但我似乎無法找到關於在一個事務中這樣做的很多信息,從我在這裏和我瞭解到目前爲止,我相信它可能會嘗試在事務之前提交事務如果命令很耗時,命令已經完全完成。如果你能建議/指出我的例子,我會非常感激。
var sqlQuery = "delete from table";
using (var connection = new SqlConnection(ConnectionString))
{
await connection.OpenAsync();
using (var tran = connection.BeginTransaction())
{
using (var command = new SqlCommand(sqlQuery, connection, tran))
{
await command.ExecuteNonQueryAsync();
tran.Commit();
}
}
}
感謝,
@Igor感謝您的幫助,該方法實際上是從一個不同的類被包裹在一個try catch中調用 - 對不起,我應該在我的帖子中提到。 –
良好的交易。你仍然需要一個對創建的'SqlTransaction'的引用,儘管你可以在代碼中執行'tran.RollBack()'(見下面的答案),調用代碼沒有意義,除非這是一個較小的樣本數據庫抽象包裝什麼的。 – Igor
@Igor好的大喊,謝謝你的回答 –