实体框架刷新实体不刷新其外键

时间:2010-11-12 09:54:09

标签: wpf entity-framework binding entity-relationship

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

例如:

//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!!

请帮忙, 谢谢, 奥兰

1 个答案:

答案 0 :(得分:1)

好吧,似乎在重新创建EDM并重建项目后,上述过程运行正常。

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

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

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

希望它有所帮助, 奥兰