以下 BeginTransaction 方法有什么区别:
SqlConnection.BeginTransaction 方法
DbConnection.BeginTransaction 方法
DbConnection.BeginDbTransaction 方法
此外,它们与 System.Transaction 中的 TransactionScope() 方法有何不同?
最佳答案
SqlConnection.BeginTransaction
创建一个SqlTransaction
,它特定于 MS SQL ServerDbConnection.BeginTransaction
创建一个DbTransaction
,它是通用的,并依赖于底层连接来创建特定于数据库的事务。如果您的DbConnection
是SqlConnection
类型,这将是一个SqlTransaction
。DbConnection.BeginDbTransaction
是一种 protected 方法,如果您要创建自己的继承自DbConnection
的类,则可以覆盖该方法。
编辑:
这些都是特定于创建它们的数据库连接,它的使用方式不同于不依赖于数据库的 TransactionScope。我相信如果您想协调多个连接之间的事务,您必须显式调用 DbConnection.EnlistTransaction(transaction)
。使用 TransactionScope,连接将(取决于数据库提供者,至少它应该)自动登记在 TransactionScope 中(如果连接打开时存在)。在 WCF 中,TransactionScope 也可以跨服务边界传递,并可用于将多个服务调用的结果作为单个事务提交。
关于c# - 不同 BeginTransaction 方法之间的区别。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6860096/