在EF 4.0中克隆自我跟踪实体?

时间:2011-12-06 20:26:24

标签: c# .net entity-framework self-tracking-entities

如何在EF 4.0中克隆自我跟踪实体图?

由于

2 个答案:

答案 0 :(得分:1)

自我跟踪实体是可序列化的,因此获得实体深度克隆的最简单方法(深度克隆=图的克隆)是使用DataContractSerializer并序列化并立即反序列化它。反序列化的实体将成为您图形的克隆。

答案 1 :(得分:0)

当你说“克隆”时,你的意思是创建一个将被保留的新实体,还是只创建另一个“瞬态”实体,它是同一实体的内存中副本?

如果要创建内存中副本,可以始终创建实体类的新实例,并复制字段。对它的更改将不会被跟踪,因为您尚未告知相关内容。

var newInstance = new SomeEntity() { SomeProperty = oldInstance.SomeProperty };

如果要创建一个将保留的新实体,则只需执行正常操作即可插入新记录。 E.g:

context.SomeEntities.Add(newInstance);

您无法在逻辑上制作跟踪更改的完整副本,但会引用同一个实例。你会选择哪个版本的对象?