我正在使用EF6和GraphDiff 2.0.1。 我想在保存过期条目时检查DbUpdateConcurrencyException。 当我在没有UpdateGraph的情况下执行此操作时:没有问题,EF会引发异常。
try
{
var dbEntry = Context.Persons.SingleOrDefault(p => p.PersonId ==
disconnectedEntry.PersonId);
dbEntry.Name = disconnectedEntry.Name;
Context.Entry(dbEntry).OriginalValues["RowVersion"] = disconnectedEntry.RowVersion;
DbContext.SaveChanges();
}
catch (DbUpdateConcurrencyException ex)
{
// Exception thrown as expected.
}
我使用此处描述的解决方案来实现此目的: EF not throwing DbUpdateConcurrencyException despite conflicting updates
问题是:如果我在来自EF的SaveChanges之前使用GraphDiff的UpdateGraph:UpdateGraph会引发不完整的DbUpdateConcurrencyException。实际上,该例外不包含条目。
try
{
DbContext.UpdateGraph(disconnectedEntry);
DbContext.SaveChanges();
}
catch (DbUpdateConcurrencyException ex)
{
// Exception thrown as expected. But ex is incomplete
}
我很惊讶UpdateGraph引发了这个异常。根据我的说法,UpdateGraph更新连接的条目,但不保存。所以,它应该什么都不做,让EF做这个工作。
有没有办法避免UpdateGraph引发异常。至少,如果它提出一个完整的那个可能会很棒。