WPF克隆/分离对象编辑问题 - 标准是什么?

问题描述:

我正在使用ObservableCollection来包装我生成的一些实体框架对象。 当用户想要编辑某些值时,我打开一个包含字段的弹出式窗口,当用户更改并按下保存时 - 更改将保存到数据库中,并且绑定的控件将作为可观察集合进行更改。WPF克隆/分离对象编辑问题 - 标准是什么?

为了防止用户在同一绑定对象上工作(它会导致每个绑定控件同时发生可视化更改)我想使用某些功能克隆对象,然后分离原始对象,附加克隆对象,并将其保存到数据库。问题是克隆的对象不能正确保存到数据库。如果我尝试只分离对象,编辑,然后附加 - 当分离它失去了所有的父母和孩子的指称...

WPF中的CRUD标准是什么?我怎样才能干净地编辑一个当前行,同时保持它在一个ObservableCollection?

请帮助....

奥兰

那么它似乎我已经找到了细解。

  1. 首先实现你可复制的对象容器:

    public class ClonableObjectContainer : Object , ICloneable 
    { 
        private Object data; 
    
        public ClonableObjectContainer(Object obj) 
        { 
         data = obj; 
        } 
    
        public Object Data 
        { 
         get { return data; } 
        } 
    
        public object Clone() 
        { 
         return (ClonableObjectContainer)this.MemberwiseClone(); 
        } 
    } 
    
  2. 然后使用这个对象及其克隆方法来建立分离编辑对象:

      ClonableObjectContainer coc = new ClonableObjectContainer(actor); 
         EntityObject editEntity = (EntityObject)coc.Data; 
    
  3. 进行更改后,分离来自ObjectContext的原始对象 ,附加克隆的对象,将其状态更改为EntityState.Modified和grace充分节省了:

     ContextManager.CurrentObjectContext.Detach(oldItem); 
         ContextManager.CurrentObjectContext.Attach((IEntityWithKey)item); 
         ContextManager.CurrentObjectContext.ObjectStateManager.ChangeObjectState(item, EntityState.Modified); 
         ContextManager.Save(); 
    

希望它可以帮助... 奥兰

编辑:如果以下不为你工作,请继续讨论:Entity Framework Attach Exception After Clone