Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 为什么不是';";DbContext.SaveChanges()”;投掷;DbUpdateConcurrencyException“;_Entity Framework - Fatal编程技术网

Entity framework 为什么不是';";DbContext.SaveChanges()”;投掷;DbUpdateConcurrencyException“;

Entity framework 为什么不是';";DbContext.SaveChanges()”;投掷;DbUpdateConcurrencyException“;,entity-framework,Entity Framework,我正在使用DbContext尝试POCO,但不知道如何触发乐观并发异常。当我在并发失败时调用DbContext.SaveChanges()时,它返回零,而不是抛出DbUpdateConcurrencyException或OptimisticConcurrencyException 不清楚应该抛出哪一个(可能是前者),但我已经详细阅读了这篇文章 以及许多文章,但找不到任何解决这种情况的方法。我是否需要显式地执行某些操作来生成异常 请注意,我的POCO类和DBContext派生类是由“EF 4

我正在使用
DbContext
尝试POCO,但不知道如何触发乐观并发异常。当我在并发失败时调用
DbContext.SaveChanges()
时,它返回零,而不是抛出
DbUpdateConcurrencyException
OptimisticConcurrencyException

不清楚应该抛出哪一个(可能是前者),但我已经详细阅读了这篇文章

以及许多文章,但找不到任何解决这种情况的方法。我是否需要显式地执行某些操作来生成异常


请注意,我的POCO类和
DBContext
派生类是由“EF 4.x DBContext生成器”自动生成的,并且正在更新的字段将其“并发模式”设置为“固定”(尽管我认为这在POCO环境中没有任何影响)。

如果在不同的线程中创建两个上下文实例,或者在另一个内部,则可以获得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
}

好的,谢谢。然而,在我自己的实验中,如果我检索并更新一个字段,在“SaveChanges”处中断,然后在我的应用程序之外更新同一字段(使用其他方法),然后允许“SaveChanges()”继续,它不会引发任何异常。它只返回零(没有“DbUpdateConcurrencyException”)。但是,如果我使用“ObjectContext”运行相同的实验(而不是“DbCOntext”-无POCO IOW),它会按预期工作(“抛出OptimisticConcurrencyException”)。有什么想法吗?我刚刚测试了您自己的场景,出现了与我预期相同的问题。第一次调用“SaveChanges()”有效,第二次调用返回零(无例外)。这只是一个更新,我发现了“ConcurrencyCheckAttribute”(未广泛宣传),但它似乎没有像宣传的那样工作。一旦我搞清楚了,我会发回的。有趣。以后我得测试一下自己