Bai*_*aig 0 c# ado.net entity-framework transactions
以下BeginTransaction方法之间的区别是什么:
SqlConnection.BeginTransaction方法
DbConnection.BeginTransaction方法
DbConnection.BeginDbTransaction方法
而且,它们与System.Transaction中的TransactionScope()方法有何不同?
SqlConnection.BeginTransaction创建一个SqlTransaction特定于MS SQL Server的DbConnection.BeginTransaction创建一个DbTransaction通用的,并依赖于底层连接来创建特定于数据库的事务.如果你DbConnection的类型SqlConnection,这将是一个SqlTransaction.DbConnection.BeginDbTransaction是一个受保护的方法,如果您正在创建自己继承的类,则可以覆盖该方法DbConnection.编辑:
这些都是特定于创建它们的数据库连接,其使用方式与TransactionScope不同,后者与数据库无关.我相信如果你想协调多个连接之间的事务,你必须明确调用DbConnection.EnlistTransaction(transaction).使用TransactionScope,连接将(根据数据库提供程序,至少它应该)在TransactionScope中自动登记(如果在打开连接时存在).在WCF中,TransactionScope也可以跨服务边界传递,并可用于将多个服务调用的结果作为单个事务提交.