EF6中的BeginTransaction(字符串)

问题描述 投票:1回答:1

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

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

c# entity-framework transactions
1个回答
2
投票

这有点复杂,但你可以在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
        }
    }
}

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

public MyContext(DbConnection connection)
    : base(connection, false)
{ }
© www.soinside.com 2019 - 2024. All rights reserved.