Error (BeginExecuteNonQuery requires the command to have a transaction when the connection assigned to the command is in a pending local transaction. The Transaction property of the command has not been initialized.) is reported when executing (var result = await command.ExecuteNonQueryAsync().ConfigureAwait(false))
时间: 2024-03-15 20:47:06 浏览: 216
这个错误通常是因为你的代码在执行命令之前没有初始化事务。在执行命令之前,你需要在命令对象上设置一个有效的事务。你可以使用以下代码中的一种方法来解决这个问题:
1. 使用连接对象的 BeginTransaction 方法创建一个新的事务对象,然后将该对象分配给命令对象的 Transaction 属性。
```
using (var connection = new SqlConnection(connectionString))
{
await connection.OpenAsync();
var transaction = connection.BeginTransaction();
var command = new SqlCommand(sqlQuery, connection);
command.Transaction = transaction;
var result = await command.ExecuteNonQueryAsync();
transaction.Commit();
}
```
2. 在命令对象上调用 ExecuteNonQuery 方法时,将 CommandBehavior 设置为 RequireExplicitTransaction。
```
using (var connection = new SqlConnection(connectionString))
{
await connection.OpenAsync();
var command = new SqlCommand(sqlQuery, connection);
var result = await command.ExecuteNonQueryAsync(CommandBehavior.RequireExplicitTransaction);
}
```
这些方法都会创建一个新的事务对象,并将其分配给命令对象。如果你已经有一个事务对象,请确保将其分配给命令对象的 Transaction 属性,而不是创建一个新的事务对象。
阅读全文