如何在EF 4.0中克隆自我跟踪实体图?
由于
答案 0 :(得分:1)
自我跟踪实体是可序列化的,因此获得实体深度克隆的最简单方法(深度克隆=图的克隆)是使用DataContractSerializer
并序列化并立即反序列化它。反序列化的实体将成为您图形的克隆。
答案 1 :(得分:0)
当你说“克隆”时,你的意思是创建一个将被保留的新实体,还是只创建另一个“瞬态”实体,它是同一实体的内存中副本?
如果要创建内存中副本,可以始终创建实体类的新实例,并复制字段。对它的更改将不会被跟踪,因为您尚未告知相关内容。
var newInstance = new SomeEntity() { SomeProperty = oldInstance.SomeProperty };
如果要创建一个将保留的新实体,则只需执行正常操作即可插入新记录。 E.g:
context.SomeEntities.Add(newInstance);
您无法在逻辑上制作跟踪更改的完整副本,但会引用同一个实例。你会选择哪个版本的对象?