我正在使用DbContext
试验POCO,并且不了解如何触发乐观并发异常。当我在它应该失败并发时调用DbContext.SaveChanges()
时,它返回零而不是抛出DbUpdateConcurrencyException
或OptimisticConcurrencyException
。
目前还不清楚哪些应该抛出(大概是前者),但我已经详细阅读了这篇文章
以及许多文章,无法找到解决这种情况的任何内容。我需要明确做些什么才能生成异常吗?
请注意,我的POCO类和DBContext
衍生物是由“EF 4.x DBContext Generator”自动生成的,正在更新的字段将其“并发模式”设置为“固定”(尽管我不是认为这对POCO环境有任何影响。)
答案 0 :(得分:3)
如果在不同的线程中或在另一个内部创建上下文的两个实例,则可以获得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
}