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)
{ }
我想在 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)
{ }