Nhibernate克隆对象并作为新记录插入

时间:2011-11-01 02:17:07

标签: nhibernate clone

有没有办法让NHibernate克隆现有对象(通过nhibernate检索)并对其执行插入以创建新记录,而不是更新当前记录。

我们正在使用它来进行某种时态版本控制并需要这种行为。

2 个答案:

答案 0 :(得分:2)

我不知道任何内置于nhibernate中的东西都可以完成你所追求的目标。

警告黑客前进
我没有试过这个,所以这只是大声思考nhibernate如何跟踪对象。

根据对象图,您可以将版本(如果有)和id重置为映射中指定的默认值,并且应该创建克隆,因为它有效地重置nhibernate跟踪对象的方式,并且在保存时它将被赋予一个新的Id。另请注意,任何附加的映射对象也需要完成相同的操作才能获得深度克隆。

如果是我,我可能会在对象上放置一个克隆方法,该方法返回一个带有属性副本的新对象,等等。

关于SO的其他一些答案建议使用Automapper How to clone objects in NHibernate?

答案 1 :(得分:1)

只需执行MemberwiseClone并清除ID。