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