有没有办法让NHibernate克隆现有对象(通过nhibernate检索)并对其执行插入以创建新记录,而不是更新当前记录。
我们正在使用它来进行某种时态版本控制并需要这种行为。
答案 0 :(得分:2)
我不知道任何内置于nhibernate中的东西都可以完成你所追求的目标。
警告黑客前进
我没有试过这个,所以这只是大声思考nhibernate如何跟踪对象。
根据对象图,您可以将版本(如果有)和id重置为映射中指定的默认值,并且应该创建克隆,因为它有效地重置nhibernate跟踪对象的方式,并且在保存时它将被赋予一个新的Id。另请注意,任何附加的映射对象也需要完成相同的操作才能获得深度克隆。
如果是我,我可能会在对象上放置一个克隆方法,该方法返回一个带有属性副本的新对象,等等。
关于SO的其他一些答案建议使用Automapper How to clone objects in NHibernate?
答案 1 :(得分:1)
只需执行MemberwiseClone
并清除ID。