Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不同的启动方式之间的差异。_C#_Entity Framework_Ado.net_Transactions - Fatal编程技术网

C# 不同的启动方式之间的差异。

C# 不同的启动方式之间的差异。,c#,entity-framework,ado.net,transactions,C#,Entity Framework,Ado.net,Transactions,以下BeginTransaction方法之间有什么区别: SqlConnection.BeginTransaction方法 DbConnection.BeginTransaction方法 DbConnection.BeginDbTransaction方法 此外,它们与System.Transaction中的TransactionScope()方法有何不同 SqlConnection.BeginTransaction创建一个特定于MS SQL Server的SqlTransaction DbCon

以下BeginTransaction方法之间有什么区别:

  • SqlConnection.BeginTransaction方法

  • DbConnection.BeginTransaction方法

  • DbConnection.BeginDbTransaction方法

  • 此外,它们与System.Transaction中的TransactionScope()方法有何不同

  • SqlConnection.BeginTransaction
    创建一个特定于MS SQL Server的
    SqlTransaction
  • DbConnection.BeginTransaction
    创建一个
    DbTransaction
    ,它是通用的,依赖于基础连接来创建特定于数据库的事务。如果您的
    DbConnection
    类型为
    SqlConnection
    ,则这将是一个
    SqlTransaction
  • DbConnection.BeginDbTransaction
    是一种受保护的方法,如果要创建自己的类继承自
    DbConnection
    ,则可以重写该方法
  • 编辑:

    这些都是特定于从中创建它们的数据库连接的,其使用方式与TransactionScope不同,TransactionScope不依赖于数据库。我认为,如果您想协调多个连接之间的事务,必须显式调用
    DbConnection.EnclestTransaction(transaction)
    。使用TransactionScope,连接将(取决于数据库提供程序,至少它应该)自动登记到TransactionScope中(如果在打开连接时存在)。在WCF中,TransactionScope还可以跨服务边界传递,并可用于将多个服务调用的结果作为单个事务提交

  • SqlConnection.BeginTransaction
    创建一个特定于MS SQL Server的
    SqlTransaction
  • DbConnection.BeginTransaction
    创建一个
    DbTransaction
    ,它是通用的,依赖于基础连接来创建特定于数据库的事务。如果您的
    DbConnection
    类型为
    SqlConnection
    ,则这将是一个
    SqlTransaction
  • DbConnection.BeginDbTransaction
    是一种受保护的方法,如果要创建自己的类继承自
    DbConnection
    ,则可以重写该方法
  • 编辑:


    这些都是特定于从中创建它们的数据库连接的,其使用方式与TransactionScope不同,TransactionScope不依赖于数据库。我认为,如果您想协调多个连接之间的事务,必须显式调用
    DbConnection.EnclestTransaction(transaction)
    。使用TransactionScope,连接将(取决于数据库提供程序,至少它应该)自动登记到TransactionScope中(如果在打开连接时存在)。在WCF中,TransactionScope还可以跨服务边界传递,并可用于将多个服务调用的结果作为单个事务提交。

    这些服务的MSDN文档说明了什么?这些服务的MSDN文档说明了什么?感谢您的解释。您能将这些与TransactionScope()区分开来吗?他们之间有什么关系吗?谢谢你的解释。您能将这些与TransactionScope()区分开来吗?他们之间有什么关系吗?