【发布时间】:2011-12-06 20:26:23
【问题描述】:
如何在 EF 4.0 中克隆自跟踪实体图?
谢谢
【问题讨论】:
标签: c# .net entity-framework self-tracking-entities
如何在 EF 4.0 中克隆自跟踪实体图?
谢谢
【问题讨论】:
标签: c# .net entity-framework self-tracking-entities
自跟踪实体是可序列化的,因此获取实体的深度克隆(深度克隆 = 图的克隆)的最简单方法是使用 DataContractSerializer 并对其进行序列化并立即反序列化。反序列化的实体将是您的图形克隆。
【讨论】:
当您说“克隆”时,您是指创建一个将被持久化的新实体,还是只是创建另一个“临时”实体,它是同一实体的内存副本?
如果您想在内存中创建副本,您始终可以创建实体类的新实例,并复制字段。不会跟踪对它的更改,因为您尚未告知上下文。
var newInstance = new SomeEntity() { SomeProperty = oldInstance.SomeProperty };
如果您想创建一个将被持久化的新实体,那么只需执行您会执行的常规操作来插入新记录。例如:
context.SomeEntities.Add(newInstance);
您不能在逻辑上创建一个完整的副本来跟踪更改,而是引用同一个实例。您会采用哪个版本的对象?
【讨论】: