У меня есть веб-приложение, которое использует Entity Framework - мы используем класс TransactionScope для обеспечения окружающих транзакций.
Есть ли способ сказать EF использовать стандартную транзакцию T-SQL вместо транзакции DTC? Довольно часто мы делаем несколько запросов к разным таблицам внутри одного EntityContext и одного экземпляра TransactionScope, однако это, похоже, всегда переводит транзакцию в DTC
Я собрал короткий пример, см. Ниже. Запрос к отдельной таблице правильно запускает транзакцию T-SQL и был связан с SPID 54
Затем выполняется запрос к таблице ContactUs, и EF делает это на другом соединении (SPID 53), что влияет на преобразование транзакции в транзакцию DTC. **
using (MyEntities DB = new MyEntities())
{
using (TransactionScope t = new TransactionScope())
{
DB.Individual.First().EmailAddress = "bob" + DateTime.Now.Second.ToString() + "@bob.com"; // done on connection 54
DB.ContactUs.First(); // done on connection 53 thus promoting the transaction!!
DB.SaveChanges();
t.Complete();
}
}