3

我正在尝试使用 POCO DbContext,但不明白如何触发乐观并发异常。当我DbContext.SaveChanges()在它应该并发失败的时候调用时,它返回零而不是抛出DbUpdateConcurrencyExceptionOptimisticConcurrencyException就此而言。

目前还不清楚应该扔哪个(大概是前者),但我已经详细阅读过

以及许多文章,找不到任何可以解决这种情况的东西。我需要明确做些什么来生成异常吗?

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

4

1 回答 1

3

如果您在不同的线程中或在另一个线程中创建上下文的两个实例,那么您可能会获得 DbUpdateConcurrencyException。IE

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 回答