我想在EF 6中使用名称(字符串)的数据库事务。
我找到了BeginTransaction()
方法,但它只有IsolationLevel
参数:BeginTransaction(IsolationLevel)
有没有办法在EF6中使用带字符串的事务?
答案 0 :(得分: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)
{ }