.net - 克隆(深层复制)实体 LINQ

标签 .net linq clone

我想深度复制一个实体,我正在寻找最好的方法。我也很关心性能。

我计划让我的所有实体都实现 ICloneable,其中 Clone() 基本上会影子复制并克隆所有引用。

例如:

[DataContract()]    
class MyEntity {
    public int id;  
    public string name;     
    public EntitySet<AnotherEntity> myOtherEntity;
}

MyEntity Clone() {
 Entity ent = new Entity(); 
 ent.name = this.name;
 ent.myOtherEntity = this.myOtherEntity.Clone();
 return ent;
}

这样做的好方法吗?或者我应该用 linq 加载实体,删除所有主键(将 id 设置为 0),然后使用 Create(entity) 函数复制它?反射是否也是一个有效的解决方案(不会太慢)?至少反射可以避免更新我的实体类(例如新成员)而不更新克隆函数时的问题...

最佳答案

ICloneable 不是一个的解决方案;毕竟,它是为此目的而设计的。我不确定是否要为每个实体类型编写一个实现,但您可以使用代码生成器来解决这个问题。但是要小心循环引用。但是,如果您在执行此操作时完全关心性能,那么您可能做得太频繁了。如果性能是这里的一个问题,我想知道您实际上要解决什么问题。

关于.net - 克隆(深层复制)实体 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1467606/

相关文章:

c# - 映射列表未从主列表中获取所有项目

javascript - 使用 javascript 克隆 php foreach 元素

c# - 是否可以复制 .NET HashAlgorithm(用于重复的增量哈希结果)?

sql - 为现有 SQL 数据库创建 Azure 存储库

c# - 在 C# 中对动态数据类型进行装箱?

linq - 如何连接到数据库linq

c# - 正则表达式捕获文件名中的第一个/最后一个词

vb.net - 如何在 LINQ 子查询中处理 Null?

c# - 从一组重载中获取最佳匹配的重载

.net - 有没有办法将 Delphi 2010 表单迁移到 Delphi Prism (.Net) XE 表单?