2015-12-07 5 views
1

Я хочу использовать транзакцию базы данных с именем (строки) в EF 6.BeginTransaction (строка) в EF6

Я нашел метод BeginTransaction, но он имеет только IsolationLevel параметр. Есть ли способ использовать транзакцию со строкой в ​​EF 6?

+0

Я думаю, что новая парадигма транзакций в ADO.NET не использует именования транзакций, но вместо этого использует транзакции с использованием транзакций через TransactionScope. Любая причина, по которой вы хотите назвать транзакцию? – Randy

ответ

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) 
{ } 
+0

Большое спасибо. он работает: D –

Смежные вопросы