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合法嗎? 是的,了解原因