【发布时间】:2010-11-30 20:33:18
【问题描述】:
我想深度复制一个实体,我正在寻找最好的方法。我也很关心表演。
我计划让我的所有实体实现 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) 函数复制它?反射也可以是一个有效的解决方案(不太慢)吗?在更新我的实体类(例如新成员)而不更新克隆函数时,至少反射可以避免这个问题......
【问题讨论】: