WPF ObjectContext附加分离 - 不起作用

时间:2010-09-02 17:41:51

标签: c# wpf entity-framework wpf-controls binding

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

不会发生异常,但不会对数据库进行更新。

以下是执行更新的方法。它是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 个答案:

答案 0 :(得分:1)

您的克隆实体不会跟踪更改,因此当您附加它时,它仍处于未更改状态。尝试在附加后添加此行:

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

你也可以尝试使用这个:

ContextManager.CurrentObjectContext.DetectChanges(item);