【问题标题】:Deep Clone Entity Without Serialization没有序列化的深度克隆实体
【发布时间】:2012-10-30 16:00:33
【问题描述】:

我需要深度克隆一个实体(使用现有实体作为新实体的模式)。我找到了几种方法,但都包括序列化。由于我们的实体派生自不可序列化的 MVVM 工具包的 ObservableObject,我们不能使用这些方法。

最好的方法是什么?

我们正在使用 .net 4.5 和 EF5 和 WPF。

【问题讨论】:

  • 为什么不能完全序列化?有了足够的反射,一切都是可序列化的。
  • 旁注:请避免在您的问题中添加签名,因为您在用户名FAQ 中已有签名。
  • 是吗?你可以给我一个例子吗。我没有经常使用序列化...
  • 将数据对象兼作业务对象并不是一个好主意。

标签: c# wpf entity-framework serialization


【解决方案1】:
  1. 一种方法是简单地编写将为您执行克隆的自定义代码。给定一个对象,新建一个实例,然后为每个属性编写一些代码,这些代码将为您提供该属性的深层副本,也许递归地链接您的对象图以获得复杂的属性。

  2. 另一种选择是创建一个模型来存储您的重要数据,对其进行序列化,然后将数据从该临时可序列化模型中反序列化并恢复到一个新的实体对象中。

【讨论】:

    【解决方案2】:

    您可以使用一些库进行深度克隆。它比手动实现要慢(通过手动实现,您可以通过仅复制所需的属性来优化您的任务),但总的来说,这个库对于 general 复制很有用。

    我最喜欢的是DeepCloner,也可以在CloneExtensions看到

    【讨论】:

      猜你喜欢
      • 2013-09-06
      • 2020-01-09
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 2017-09-01
      • 2016-02-25
      • 2017-11-17
      相关资源
      最近更新 更多