我需要深度克隆实体(使用现有实体作为新实体的模式)。我找到了几种方法,但都包括序列化。由于我们的实体派生自MVVM Toolkit的ObservableObject,而不是Serializableable,我们无法使用这些方法。
最好的方法是什么?
我们使用的是.net 4.5和EF5以及WPF。
答案 0 :(得分:1)
一种方法是简单地编写将为您执行克隆的自定义代码。给定一个对象,一个新实例,然后为每个属性编写一些代码,这些代码将为您提供该属性的深层副本,可能会递归地链接您的对象图以获得复杂属性。
另一种选择是创建一个模型,用于存储重要数据,对其进行序列化,然后将该临时可序列化模型中的数据反序列化并还原到新的实体对象中。
答案 1 :(得分:0)
您可以使用一些库进行深度克隆。它比手动实现慢(并且通过手动实现,您可以通过仅复制必需的属性来优化任务),但通常,此库对于一般复制非常有用。
我最喜欢的是DeepCloner,您也可以在CloneExtensions
看到