【发布时间】:2010-03-11 17:19:07
【问题描述】:
如何在NHibernate中实现对象(实体)克隆?每个实体类都有这样的属性:
public virtual IList<Club> Clubs { get; set; }
另外,实体类继承BaseObject。 我尝试使用 XML 序列化来实现解决方案,但是无法序列化接口。
感谢您的回答!
【问题讨论】:
标签: c# .net nhibernate serialization
如何在NHibernate中实现对象(实体)克隆?每个实体类都有这样的属性:
public virtual IList<Club> Clubs { get; set; }
另外,实体类继承BaseObject。 我尝试使用 XML 序列化来实现解决方案,但是无法序列化接口。
感谢您的回答!
【问题讨论】:
标签: c# .net nhibernate serialization
AutoMapper http://automapper.codeplex.com/ 解决了我的问题。 例如,可以通过以下方式克隆业务对象:
Mapper.CreateMap<Transaction, Transaction>();
var newtransact = new Transaction();
Mapper.Map(transact, newtransact);
【讨论】:
Mapper.CreateMap<Transaction, Transaction>().ForMember(d => d.Id, o => o.Ignore()); 排除 Id 属性,并使用以下内容手动复制 IList 属性:newtransact.Clubs = this.Clubs.Select(item => item.Clone()).ToList(); - 请参阅:stackoverflow.com/questions/3396808
【讨论】:
我不知道您的领域或要求,也不知道我是否误解了您的需求,但是实现 ICloneable interface 并编写代码来克隆您的对象应该可以工作。
请记住,您必须在克隆时键入 cast。
ClonedObject clonedObjectinstance = (ClonedObject)initialEntityInstance.Clone();
【讨论】: