3

POCO を使用して実験してDbContextいますが、楽観的同時実行例外をトリガーする方法がわかりません。DbContext.SaveChanges()同時実行に失敗する必要があるときに呼び出すと、スローDbUpdateConcurrencyExceptionする代わりにゼロを返しますOptimisticConcurrencyException

どちらがスローされるべきかは不明ですが (おそらく前者)、これを詳細に読みました

多くの記事と同様に、状況に対処するものは何も見つかりません。例外を生成するために明示的に行う必要があることはありますか?

私の POCO クラスとDBContext派生物は "EF 4.x DBContext Generator" によって自動的に生成され、更新されるフィールドの "Concurrency Mode" は "Fixed" に設定されていることに注意してください (これが POCO に影響を与えるとは思いませんが)環境)。

4

1 に答える 1

3

コンテキストの 2 つのインスタンスを異なるスレッドまたは相互に作成すると、DbUpdateConcurrencyException が発生する可能性があります。いえ

using (var db = new myContext())
{
    db.PocoClass.Add(someNewOrUpdatedObj);

    using (var db2 = new myContext())
    {
        db2.PocoClass.Add(someNewOrUpdatedObj);
        db2.SaveChanges();
    }

    db.SaveChanges(); //DbUpdateConcurrencyException thrown here
}
于 2012-07-25T14:52:57.950 に答える