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(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |