GraphDiff中的UpdateGraph引发了一个不完整的DbUpdateConcurrencyException

时间:2017-10-12 13:44:50

标签: c# entity-framework graphdiff

我正在使用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引发异常。至少,如果它提出一个完整的那个可能会很棒。

0 个答案:

没有答案