Effort抛出InvalidOperationException:Sequence包含多个匹配元素

c# effort entity-framework

我通过创建连接并将其传递给DB Context以常规方式使用Effort:

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这样的上下文操作会抛出。

我在Effort网站上或通过谷歌搜索找不到任何人有同样的问题。也许这是一个错误?我正在使用最新版本的Effort - 1.1.4和Entity Framework - 6.1.3。

我检查了有关DbContext或实体类的任何特殊事情,但没有找到任何东西。

热门答案

我遇到了这个问题,发现为每个上下文使用单独的连接( Effort.DbConnectionFactory.CreatePersistent )解决了这个问题。

在我的情况下,每个上下文都在完全不同的表上运行,因此在Effort / NMemory中不应该存在冲突 - 所以我认为错误报告是合理的 - 但是这些信息可能在此期间解锁人。

权衡的是,这可能会警告你,你确实有两个在同一张桌子上运行的情境,这很糟糕 - 所以你也要注意这一点。




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因