en nuestro proyecto actual, estamos utilizando ADO.NET Entity Framework como capa de datos para la aplicación. Hay algunas tareas que requieren ejecutarse en una transacción porque hay mucho trabajo por hacer en la base de datos. Estoy usando un TransactionScope para rodear esas tareas.Problema de MSDTC con transacciones en ADO.NET Entity Framework
using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.RequiresNew))
{
// Do something...
transactionScope.Complete();
}
El problema es tan pronto como estoy usando un TransactionScope se produce una excepción:
System.Data.EntityException: El proveedor subyacente falló en Abrir. ---> System.Transactions.TransactionManagerCommunicationException: la comunicación con el administrador de transacciones subyacente ha fallado. ---> System.Runtime.InteropServices.COMException (0x80004005): Error HRESULT E_FAIL ha sido devuelto desde una llamada a un componente COM.
Parece que este error tiene que ver con el MSDTC (Coordinador de transacciones distribuidas de Microsoft). Cuando cambio la configuración de seguridad de MSDTC se lanza otra excepción:
System.Data.EntityException: El proveedor subyacente falló en Abrir. ---> System.Transactions.TransactionManagerCommunicationException: Se ha deshabilitado el acceso a la red para Distributed Transaction Manager (MSDTC). Habilite DTC para el acceso a la red en la configuración de seguridad para MSDTC utilizando la herramienta administrativa de Servicios de componentes.
Sin embargo, MSDTC está configurado, el TransactionScope causará un error. ¿Alguien sabe qué está yendo mal aquí?
Creo no utiliza ninguna transacción en este caso, pero no estoy seguro. –
Sí, esta opción indica que no debe participar en la transacción. –
Recibo el mismo error, pero no hay forma de que sea la mejor respuesta. –