2010-03-11 93 views
11

如何實現在NHibernate中克隆的對象(實體)?每個實體類都具有以下屬性:如何在NHibernate中克隆對象?

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

此外,實體類繼承BaseObject。 我試圖使用XML序列化來實現解決方案,但不可能對接口進行序列化。

謝謝你的回答!

回答

14

AutoMapper http://automapper.codeplex.com/解決了我的問題。 例如,它可以克隆一個業務對象在未來的方式:

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

你需要使用'Mapper.CreateMap ()。ForMember(d => d.Id,o => o.Ignore())'來排除Id屬性,並且使用類似的方法手動複製IList屬性:'newtransact.Clubs = this.Clubs.Select(item => item.Clone())。ToList();' - 參見:http://stackoverflow.com/questions/3396808/ – 2010-08-03 15:56:52

+0

謝謝你。它爲我節省了一些頭痛。 – Nick 2013-06-18 19:11:24

0

我不知道您的域名或要求,也不知道我是否誤解您的需求,但實施ICloneable interface並編寫克隆對象的代碼應該可行。

請記住,您必須在克隆時鍵入強制轉換。

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

請告訴我在哪裏,我聽錯了,這樣我可以自己學習! =)在這個問題中有什麼我被誤解的嗎?謝謝! – 2010-03-11 18:52:59