¿ADO Entity Framework admite transacciones que no sean DTC? Múltiples consultas dentro de un EntityContext y un TransactionScope están causando la promoción de DTC
Tengo una aplicación web que usa Entity Framework: utilizamos la clase TransactionScope para proporcionar transacciones ambientales.
¿Hay alguna manera de decirle a EF que use una transacción T-SQL estándar en lugar de una transacción DTC? Muy a menudo realizamos varias consultas a diferentes tablas dentro de un EntityContext y una instancia de TransactionScope, sin embargo, esto parece promover siempre la transacción a DTC
He puesto un pequeño ejemplo juntos, ver más abajo. La consulta a la tabla individual inicia correctamente una transacción T-SQL y estaba en la conexión SPID 54 Luego se realiza la consulta a la tabla ContactUs y EF hace esto en una conexión diferente (SPID 53) que tiene el efecto de promocionar la transacción a una transacción 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();
}
}