2010-09-02 64 views
0

我正在实施一个ObservableCollection来管理我的EF实体。当我想编辑一些实体时,我创建了一个实体的克隆,并在一个弹出窗口中打开它。当用户完成编辑克隆的实体时,我继续分离原始实体,然后附加新的(克隆和编辑的)实体。WPF ObjectContext附加分离 - 不工作

没有发生异常,但没有更新发生在数据库中。

以下是执行更新的方法。这是的ObservableCollection SetItem方法的重写:

protected override void SetItem(int index, T item) 
    { 
     T oldItem = Items.ElementAt(index); 
     base.SetItem(index, item); 

     try 
     { 
      ContextManager.CurrentObjectContext.Detach(oldItem); 
      ContextManager.CurrentObjectContext.Attach((IEntityWithKey)item); 
      ContextManager.CurrentObjectContext.SaveChanges(); 

     } 
     catch (Exception err) 
     { 
      base.SetItem(index, oldItem); 
      MessageBox.Show(err.Message); 
     } 
    } 

将大大任何并欣赏帮助...

由于提前, 奥兰当附加

回答

1

你的克隆实体不跟踪变化,使它,它仍然处于不变的状态。尝试安装后添加此行:

ContextManager.CurrentObjectContext.ObjectStateManager.ChangeObjectState(item, EntityState.Modified); 

您也可以尝试使用这个来代替:

ContextManager.CurrentObjectContext.DetectChanges(item); 
+0

太谢谢你了!使用ChangeObjectState解决了这个问题。 – OrPaz 2010-09-03 07:00:57