【问题标题】:Entity Framework Refresh Entity Does Not Refresh Its Foreign Keys实体框架刷新实体不刷新其外键
【发布时间】:2010-11-12 09:54:09
【问题描述】:

标记要删除的实体并保存更改时,有时操作会因外键约束而失败。在这种情况下,我通知用户并刷新实体。问题是实体没有完全刷新 - 它的外键保持为空。

例如:

//EditableEntity.SomeCollection --> Populated...

ContextManager.CurrentObjectContext.DeleteObject(EditableEntity);

try
{
    ContextManager.CurrentObjectContext.SaveChanges();
}
catch (Exception err)
{
    ContextManager.CurrentObjectContext.Refresh(System.Data.Objects.RefreshMode.StoreWins, EditableEntity);
}

//EditableEntity.SomeCollection --> Empty!!

请帮忙, 谢谢, 奥兰

【问题讨论】:

    标签: wpf entity-framework binding entity-relationship


    【解决方案1】:

    好吧,似乎在重新创建 EDM 并重新构建项目之后,上述过程可以正常工作。

    总结解决方案:当标记要删除的对象时,它的行为就像它从对象上下文中“分离”一样,失去了相关的父对象和集合,但实际上仍处于“附加”状态。如果删除操作因任何原因被取消,使用此对象相关的对象和集合,将引发异常。为了解决这个问题,我们需要将对象“附加”回对象上下文。问题是该对象仍被标记为“附加”。

    要解决这个问题,只需使用以下方法刷新对象:

    ContextManager.CurrentObjectContext.Refresh(RefreshMode.StoreWins, item);
    

    希望对你有帮助, 奥兰

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      • 1970-01-01
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多