EF6 中的 beginTransaction(string)

BeginTransaction(string) in EF6

我想在 EF 6 中使用名称为(字符串)的数据库事务。

我找到了一个BeginTransaction()方法,但是它只有一个IsolationLevel参数:BeginTransaction(IsolationLevel) 有没有办法在 EF6 中使用带有字符串的事务?

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

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
        }
    }
}

请注意,您的上下文 class 应该实现 this constructor,并且第二个参数 (contextOwnsConnection) 必须是 false。或者使用默认为 false 的构造函数:

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