Expulsión de esfuerzo InvalidOperationException: la secuencia contiene más de un elemento coincidente

c# effort entity-framework

Pregunta

Estoy usando Effort de una manera regular al crear una conexión y pasarla a DB Context:

public class InMemoryContextInitializer
{
    public void BeforeAllTests()
    {
        Effort.Provider.EffortProviderConfiguration.RegisterProvider();
    }

    public DbConnection BeforeEachTest()
    {
        return Effort.DbConnectionFactory.CreateTransient();
    }

    public void AfterEachTest(DbConnection prevUsedConnection)
    {
        prevUsedConnection.Dispose();
    }
}

y algo como esto:

public class InMemoryContextInitializer
{
    public void BeforeAllTests()
    {
        Effort.Provider.EffortProviderConfiguration.RegisterProvider();
    }

    public DbConnection BeforeEachTest()
    {
        return Effort.DbConnectionFactory.CreateTransient();
    }

    public void AfterEachTest(DbConnection prevUsedConnection)
    {
        prevUsedConnection.Dispose();
    }
}

Todas mis pruebas de Esfuerzo pasan muy bien, excepto una que arroja esto:

public class InMemoryContextInitializer
{
    public void BeforeAllTests()
    {
        Effort.Provider.EffortProviderConfiguration.RegisterProvider();
    }

    public DbConnection BeforeEachTest()
    {
        return Effort.DbConnectionFactory.CreateTransient();
    }

    public void AfterEachTest(DbConnection prevUsedConnection)
    {
        prevUsedConnection.Dispose();
    }
}

Utilizo múltiples contextos de base de datos en estas pruebas y todo funciona, excepto en este caso:

public class InMemoryContextInitializer
{
    public void BeforeAllTests()
    {
        Effort.Provider.EffortProviderConfiguration.RegisterProvider();
    }

    public DbConnection BeforeEachTest()
    {
        return Effort.DbConnectionFactory.CreateTransient();
    }

    public void AfterEachTest(DbConnection prevUsedConnection)
    {
        prevUsedConnection.Dispose();
    }
}

De hecho, cualquier operación en este contexto como Add lanzará.

No pude encontrar a nadie que tenga el mismo problema en el sitio web de Effort o en Google. Tal vez es un error? Estoy usando la última versión de Effort - 1.1.4 y Entity Framework - 6.1.3.

Revisé cualquier cosa especial sobre DbContext o la clase de entidad y no encontré nada.

Respuesta popular

Tuve este problema y encontré que usar una conexión separada ( Effort.DbConnectionFactory.CreatePersistent ) para cada contexto resolvió el problema.

En mi caso, cada contexto opera sobre tablas completamente diferentes, por lo que no debería haber habido un conflicto en Effort / NMemory, por lo que creo que el informe de errores es correcto, pero esta información puede desbloquear a las personas mientras tanto.

La desventaja es que esto podría estar advirtiéndole de que realmente tiene dos contextos operando en la misma tabla, lo que sería malo, por lo que también deberá vigilar esto.




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué