Effort throw InvalidOperationException:シーケンスに複数の一致する要素が含まれている

c# effort entity-framework

質問

私は、通常の方法で接続を作成し、それをDBコンテキストに渡すことで、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 - 1.1.4とEntity Framework - 6.1.3の最新バージョンを使用しています。

私はDbContextやエンティティクラスについて何か特別なことをチェックして何も見つけられませんでした。

人気のある回答

私はこの問題を抱えており、各コンテキストに別々の接続( Effort.DbConnectionFactory.CreatePersistent )を使用すると問題が解決されることがわかりました。

私の場合、各コンテキストはまったく異なるテーブルで動作するので、Effort / NMemoryには競合があってはいけません.-バグレポートは健全だと思いますが、この情報はその間に人々をブロックする可能性があります。

トレードオフは、同じテーブル上で2つのコンテキストが実際に動作していることを警告している可能性があります。これは悪いことです。このためにも注意が必要です。




ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ