nav*_*eed 1 .net c# sql-server sql-server-2008
我有一堆更新和插入查询,我从我需要在事务中的C#代码调用.我宁愿将它们保存在C#中,而不是使用存储过程.我使用SQLCommand.ExecuteNonQuery()来开始并提交事务.它工作正常,直到我尝试提交事务,当我收到"COMMIT TRANSACTION请求没有相应的BEGIN TRANSACTION"的消息时.我正在关闭通话之间的联系.这是问题吗?
不,他们没有.
如果您希望事务跨越数据库连接甚至不同的数据库(Distributed Transaction),可以直接在连接本身上控制C#中的事务,或者使用System.Transactions命名空间使用环境事务.
如果要关闭调用之间的连接,请使用System.Transactions命名空间来控制事务.然后,该事务将跨越连接.
使用System.Transactions命名空间的一些基本代码:
using (TransactionScope scope = new TransactionScope())
{
//Do operation 1 on connection 1 (open close connection)
//Do operation 2 on connection 2 (open close connection)
scope.Complete();
}
Run Code Online (Sandbox Code Playgroud)