如何获取DbUpdateConcurrencyException.Entry的底层对象

时间:2014-02-20 18:55:01

标签: c# wpf entity-framework

我目前正在使用Entity Framework 6.我正在重新加载DbUpdateConcurrencyException.Entry但我还需要在导致异常的特定条目上执行一些任务。我无法弄清楚如何访问该特定的底层对象,并希望对此问题提供任何帮助。

我有以下方法:

public void ReloadEntries()
{
    foreach (var item in entries)
    {
        item.Reload();
        //TODO: cast back to original "Product" datatype so I can 
        //re-process a SPECIFIC property on underlying object here
    }
    entries.Clear();
}

我将从后来改变,因为我已经意识到'条目'将始终只包含1个项目。

1 个答案:

答案 0 :(得分:2)

您需要以下内容:

try 
{
  item.Reload();
  //TODO: re-process property on underlying object here
}
catch (DbUpdateConcurrencyException ex) 
{
  // process on ex.Entries[0].Entity or
  // ex.Entries[0].Entity.OriginalValues
  ((DataType)ex.Entries[0].Entity).Property = value;

  // if your object context is still open, you could try to re-submit after trying the 
  // entity
  ctx.Attach(ex.Entries[0].Entity);
  ctx.SaveChanges();
}

此链接可能有助于如何处理该条目列表:http://msdn.microsoft.com/en-us/library/gg696410(v=vs.113).aspx