Я хочу использовать транзакцию базы данных с именем (строки) в EF 6.BeginTransaction (строка) в EF6
Я нашел метод BeginTransaction, но он имеет только IsolationLevel параметр. Есть ли способ использовать транзакцию со строкой в EF 6?
Я хочу использовать транзакцию базы данных с именем (строки) в EF 6.BeginTransaction (строка) в EF6
Я нашел метод BeginTransaction, но он имеет только IsolationLevel параметр. Есть ли способ использовать транзакцию со строкой в EF 6?
Это немного сложнее, но вы можете использовать существующее соединение + транзакцию в 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)
{ }
Большое спасибо. он работает: D –
Я думаю, что новая парадигма транзакций в ADO.NET не использует именования транзакций, но вместо этого использует транзакции с использованием транзакций через TransactionScope. Любая причина, по которой вы хотите назвать транзакцию? – Randy