加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用Connection.CreateCommand()时是否需要将ADO.NET事务

发布时间:2020-12-15 21:45:00 所属栏目:百科 来源:网络整理
导读:我需要使用ADO.NET提供程序的事务. 下面是创建连接,事务和命令的简单示例.当我使用connection.CreateCommand()创建命令时,是否需要将事务分配给命令?或者,是否设置了事务,因为我使用connection.CreateCommand()vs新建命令对象? var connection = Database.
我需要使用ADO.NET提供程序的事务.

下面是创建连接,事务和命令的简单示例.当我使用connection.CreateCommand()创建命令时,是否需要将事务分配给命令?或者,是否设置了事务,因为我使用connection.CreateCommand()vs新建命令对象?

var connection = Database.GetConnection();
connection.Open();

var transaction = connection.BeginTransaction();

var command = connection.CreateCommand();
command.Transaction = transaction; // Is this line needed when using connection.CreateCommand()?

*更新*

当我测试两个对象的引用时,它们是相同的.我假设这意味着connection.CreateCommand()返回一个指定了事务的命令.或者这可能不是一个有效的测试.

using (var connection = Database.GetConnection())
{
    connection.Open();

    var transaction = connection.BeginTransaction();

    var command = connection.CreateCommand();

    if (object.ReferenceEquals(transaction,command.Transaction))
        Debug.WriteLine("EQUAL");
}

解决方法

是的,事务和命令需要彼此关联.

一些编辑的示例代码:

// Connect to the database.
SqlConnection connection = new SqlConnection(Database.ConnectionString);
connection.Open();

// Start a transaction.
SqlCommand command = new SqlCommand();
command.Connection = connection;
command.Transaction = connection.BeginTransaction(System.Data.IsolationLevel.Serializable,"ryan");

// Delete any previously associated targets.
command.CommandType = System.Data.CommandType.StoredProcedure;
command.CommandText = "FirstSP";
command.Parameters.AddWithValue("@Id",this.Id);
command.ExecuteNonQuery();

// Add the specified targets to the product.
command.CommandText = "SecondSP";
command.Parameters.Add("@Id",SqlDbType.Int);
foreach (int Id in Ids)
{
    command.Parameters["@Id"].Value = Id;
    command.ExecuteNonQuery();
}

// Commit the transaction.
command.Transaction.Commit();

// Houseclean.
connection.Close();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读