Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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# EF6中的BeginTransaction(字符串)_C#_Entity Framework_Transactions - Fatal编程技术网

C# EF6中的BeginTransaction(字符串)

C# EF6中的BeginTransaction(字符串),c#,entity-framework,transactions,C#,Entity Framework,Transactions,我想使用EF6中名为(字符串)的数据库事务 我找到了一个BeginTransaction()方法,但它只有一个IsolationLevel参数:BeginTransaction(IsolationLevel) 有没有一种方法可以在EF6中使用带有字符串的事务?这有点复杂,但是您可以在DbContext中使用现有的连接+事务。我修改了示例以创建命名事务: using (SqlConnection conn = new SqlConnection(connectionString)) { c

我想使用EF6中名为(字符串)的数据库事务

我找到了一个
BeginTransaction()
方法,但它只有一个
IsolationLevel
参数:
BeginTransaction(IsolationLevel)

有没有一种方法可以在EF6中使用带有字符串的事务?

这有点复杂,但是您可以在
DbContext
中使用现有的连接+事务。我修改了示例以创建命名事务:

using (SqlConnection conn = new SqlConnection(connectionString))
{
    conn.Open();
    using (var trn = conn.BeginTransaction("TransactionName"))
    {
        using (var db = new MyContext(conn, false))
        {
            db.Database.UseTransaction(trn);
            ... // your code here
        }
    }
}
请注意,应该实现上下文类,并且第二个参数(
contextOwnsConnection
)必须是
false
。或者使用默认为false的构造函数:

public MyContext(DbConnection connection)
    : base(connection, false)
{ }

我认为ADO.NET中的新事务范例不使用事务命名,而是通过TransactionScope使用环境事务。您为什么要命名该交易?