Поддерживает ли ADO Entity Framework транзакции без DTC? Несколько запросов внутри одного EntityContext и одного TransactionScope вызывают продвижение DTC
У меня есть веб-приложение, которое использует 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();
}
}