WPF克隆/分离对象编辑问题 - 标准是什么?
问题描述:
我正在使用ObservableCollection来包装我生成的一些实体框架对象。 当用户想要编辑某些值时,我打开一个包含字段的弹出式窗口,当用户更改并按下保存时 - 更改将保存到数据库中,并且绑定的控件将作为可观察集合进行更改。WPF克隆/分离对象编辑问题 - 标准是什么?
为了防止用户在同一绑定对象上工作(它会导致每个绑定控件同时发生可视化更改)我想使用某些功能克隆对象,然后分离原始对象,附加克隆对象,并将其保存到数据库。问题是克隆的对象不能正确保存到数据库。如果我尝试只分离对象,编辑,然后附加 - 当分离它失去了所有的父母和孩子的指称...
WPF中的CRUD标准是什么?我怎样才能干净地编辑一个当前行,同时保持它在一个ObservableCollection?
请帮助....
奥兰
答
那么它似乎我已经找到了细解。
-
首先实现你可复制的对象容器:
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(); } }
-
然后使用这个对象及其克隆方法来建立分离编辑对象:
ClonableObjectContainer coc = new ClonableObjectContainer(actor); EntityObject editEntity = (EntityObject)coc.Data;
-
进行更改后,分离来自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