【发布时间】:2018-08-20 17:38:00
【问题描述】:
我正在对我创建的一段代码寻求帮助,我试图在事务中从 c# 进行 Async 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 好声音,谢谢你的回答