노력이 던졌습니다 InvalidOperationException : 시퀀스가 ​​두 개 이상의 일치하는 요소를 포함

c# effort entity-framework

문제

나는 연결을 생성하고 그것을 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();
    }
}

그리고 이런 식으로 :

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

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

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

내 모든 노력 테스트는 다음을 제외하고는 아무 문제가 없습니다.

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

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

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

나는이 테스트에서 여러 DB 컨텍스트를 사용하며이 경우를 제외하고는 모두 작동합니다.

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

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

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

실제로 Add 와 같은 컨텍스트에서의 모든 조작은 throw됩니다.

노력 웹 사이트 또는 검색으로 동일한 문제가있는 사람을 찾을 수 없습니다. 어쩌면 그것은 버그일까요? 최신 버전의 노력 - 1.1.4 및 Entity Framework - 6.1.3을 사용하고 있습니다.

나는 DbContext 또는 엔티티 클래스에 대한 특별한 것을 확인하고 아무것도 찾지 못했습니다.

인기 답변

이 문제가 있었고 각 컨텍스트마다 별도의 연결 ( Effort.DbConnectionFactory.CreatePersistent )을 사용하면 문제가 해결된다는 것을 Effort.DbConnectionFactory.CreatePersistent .

필자의 경우 각 컨텍스트는 완전히 다른 테이블에서 작동하므로 Effort / NMemory에서 충돌이 없어야합니다. 버그 보고서가 건전하다고 생각합니다. 그러나이 정보는 그 동안 사람들을 차단 해제 할 수 있습니다.

트레이드 오프는 이것이 동일한 테이블에서 실제로 작동하는 두 가지 컨텍스트를 가지고 있다고 경고 할 수 있다는 것입니다.이 컨텍스트는 나쁜 것이므로 너무주의해야합니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.