问题 如何在NHibernate中克隆对象?


如何在NHibernate中实现克隆的对象(实体)?每个实体类都有这样的属性:

public virtual IList<Club> Clubs { get; set; }

此外,实体类继承BaseObject。 我尝试使用XML序列化来实现解决方案,但是不可能序列化接口。

谢谢您的回答!


12297
2018-03-11 17:19


起源



答案:


AutoMapper http://automapper.codeplex.com/ 解决了我的问题。 例如,可以通过下一种方式克隆业务对象:

Mapper.CreateMap<Transaction, Transaction>();
var newtransact = new Transaction();
Mapper.Map(transact, newtransact);

14
2018-04-12 07:30



您将要使用排除Id属性 Mapper.CreateMap<Transaction, Transaction>().ForMember(d => d.Id, o => o.Ignore()); 并使用以下内容手动复制IList属性: newtransact.Clubs = this.Clubs.Select(item => item.Clone()).ToList();  - 见: stackoverflow.com/questions/3396808 - Piers Myers
谢谢你。它让我有些头疼。 - Nick


答案:


AutoMapper http://automapper.codeplex.com/ 解决了我的问题。 例如,可以通过下一种方式克隆业务对象:

Mapper.CreateMap<Transaction, Transaction>();
var newtransact = new Transaction();
Mapper.Map(transact, newtransact);

14
2018-04-12 07:30



您将要使用排除Id属性 Mapper.CreateMap<Transaction, Transaction>().ForMember(d => d.Id, o => o.Ignore()); 并使用以下内容手动复制IList属性: newtransact.Clubs = this.Clubs.Select(item => item.Clone()).ToList();  - 见: stackoverflow.com/questions/3396808 - Piers Myers
谢谢你。它让我有些头疼。 - Nick


使用DTO


2
2018-03-11 18:19





我不知道你的领域或要求,也不知道我是否误解你的需要,而是实施了 ICloneable接口 并编写代码来克隆你的对象应该工作。

请记住,克隆时你必须输入强制转换。

ClonedObject clonedObjectinstance = (ClonedObject)initialEntityInstance.Clone();

0
2018-03-11 18:28



请告诉我哪里弄错了,以便我自己学习! =)问题中我有什么误解吗?谢谢! - Will Marcouiller