Tengo una aplicación que ejecuta varios subprocesos. Los hilos NO comparten un ObjectContext (cada hilo tiene el suyo, sé que no son seguros para hilos).Transacción de Entity Framework con varios subprocesos
Sin embargo, los hilos están operando bajo una transacción compartido. El hilo original crea un TransactionScope y cada hilo que genera crea un TransactionScope usando un DependentTransaction de la transacción en el hilo principal.
Cuando varias solicitudes ObjectContext ejecutar al mismo tiempo, a veces (no siempre) sale el error:
System.Data.EntityException occurred
Message=An error occurred while closing the provider connection. See the inner exception for details.
InnerException: System.Transactions.TransactionException
Message=The operation is not valid for the state of the transaction.
Source=System.Transactions
StackTrace:
at System.Transactions.TransactionStatePSPEOperation.get_Status(InternalTransaction tx)
at System.Transactions.TransactionInformation.get_Status()
at System.Data.ProviderBase.DbConnectionInternal.CloseConnection(DbConnection owningObject, DbConnectionFactory connectionFactory)
at System.Data.SqlClient.SqlInternalConnection.CloseConnection(DbConnection owningObject, DbConnectionFactory connectionFactory)
at System.Data.SqlClient.SqlConnection.Close()
at System.Data.EntityClient.EntityConnection.StoreCloseHelper()
InnerException:
Sólo sé que se están ejecutando al mismo tiempo, porque cuando corro mis pruebas de unidad de depuración modo y esta excepción aparece, si miro los diferentes hilos que se están ejecutando, siempre veo al menos otro hilo detenido en una operación ObjectContext.
Además, después de hacer un poco de lectura, He intentado añadir multipleactiveresultsets=False
a mi cadena de conexión y que no hizo ninguna diferencia.
Es esto un error en el marco de la entidad?
El enlace en el que basa su respuesta ya no funciona. ¿Puede proporcionar más información sobre la causa raíz? –
La SyncRoot que utiliza para ingresar el bloqueo es diferente de la que está utilizando al salir. –