Выброс усилия InvalidOperationException: Последовательность содержит несколько совпадающих элементов


Вопрос

Я использую Effort регулярно, создавая соединение и передавая его в 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();
    }
}

Я использую несколько контекстов БД в этих тестах, и все это работает, за исключением этого случая:

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 будет выбрана.

Я не мог найти никого, имеющего такую ​​же проблему на веб-сайте Effort, или на googling. Может быть, это ошибка? Я использую последнюю версию Effort - 1.1.4 и Entity Framework - 6.1.3.

Я проверил любую особенность DbContext или класса сущности и ничего не нашел.

Популярные ответы

У меня возникла эта проблема и выяснилось, что использование отдельного соединения ( Effort.DbConnectionFactory.CreatePersistent ) для каждого контекста решило проблему.

В моем случае каждый контекст работает по совершенно другим таблицам, поэтому не должно было быть конфликта в Effort / NMemory, поэтому я думаю, что отчет об ошибке звучит, но эта информация может разблокировать людей тем временем.

Компромисс заключается в том, что это может предупредить вас о том, что на самом деле у вас есть два контекста, работающих в одной таблице, что было бы плохо - так что вам тоже придется следить за этим.





Лицензировано согласно: CC-BY-SA
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему