C# 代码与数据库中事务的效率

C# 代码与数据库中事务的效率,c#,.net,database,C#,.net,Database,在.net代码中有IDB事务还是在数据库中处理它,效率更高?为什么? 在哪些情况下可以使用这两种方法?对于基于连接的事务(IDbTransaction),总体性能应该非常相似-但通过在.NET代码中处理,可以方便地跨同一连接上的多个数据库操作。如果您在TSQL内部执行事务管理,您应该真正将其限制为单个TSQL查询。在开始/结束时可能会有额外的往返,但这不太可能伤害到你 我很少(现在)手动编写基于TSQL的事务——如果我编写的是服务器通过代理直接调用的东西(而不是从我自己的应用程序代码调用的话)

在.net代码中有IDB事务还是在数据库中处理它,效率更高?为什么?


在哪些情况下可以使用这两种方法?

对于基于连接的事务(
IDbTransaction
),总体性能应该非常相似-但通过在.NET代码中处理,可以方便地跨同一连接上的多个数据库操作。如果您在TSQL内部执行事务管理,您应该真正将其限制为单个TSQL查询。在开始/结束时可能会有额外的往返,但这不太可能伤害到你

我很少(现在)手动编写基于TSQL的事务——如果我编写的是服务器通过代理直接调用的东西(而不是从我自己的应用程序代码调用的话)


IDbTransaction
TransactionScope
之间的差异更大,更多信息请参见,但简短的版本是
TransactionScope
稍慢一些(取决于场景),但可以跨多个连接/数据库(或其他资源)。

谢谢Marc。。。尽管如此,我还是想知道,当一个人可以在SQL存储过程中使用事务时,为什么要使用IDbTransaction,因为您可能希望IDbTransaction跨越多个原子操作(可能已经存在)。如果事务在存储过程中,则不能这样做,但如果事务只是基于连接,则可以这样做。从关注点分离的角度来看也更好:您将事务的责任从存储过程中移开,存储过程的工作是更新一些数据(等等)。