gpt4 book ai didi

c# - ExecuteNonQueryAsync 并在 SQL 事务中提交

转载 作者:太空狗 更新时间:2023-10-29 21:21:41 35 4
gpt4 key购买 nike

我在获得有关我创建的一段代码的帮助后,我正尝试在事务中从 c# 进行异步 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();
}
}
}

谢谢,

最佳答案

您的代码看起来不错。我刚刚在命令的执行中添加了一个 try/catch,这样你就可以在失败时回滚你的事务。因为您在 await command.ExecuteNonQueryAsync(); 行中使用了 await 关键字,所以无论需要多长时间,执行都会阻塞直到方法返回(除非超时命令本身的异常,在这种情况下,您应该将命令的执行超时设置得更高或弄清楚为什么它需要这么长时间。

    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))
{
try {
await command.ExecuteNonQueryAsync();
} catch {
tran.Rollback();
throw;
}
tran.Commit();
}
}

关于c# - ExecuteNonQueryAsync 并在 SQL 事务中提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36040111/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com