NHibernate集合和移动对象

Eri*_*ndi 6 collections nhibernate

我刚刚和NHibernate一起遇到了一个重大问题.我有2个对象,每个对象都有一组东西.我需要从集合中将一件事从对象A移动到对象B的集合.我得到一个关于已删除对象的错误,因为我相信,当它需要保留对象A时,NHibernate会尝试从对象A的集合中删除它对于对象B.从DB的角度来看,只需将"父"属性更新为新对象(对象B)即可.但是对于收藏品,我不知道该做些什么...

在NHibernate中有一个众所周知的过程将对象从一个集合移动到另一个集合吗?

在此先感谢您的帮助.

问候,

埃里克.

小智 5

我假设您在对象 A 和 B 表示的类的映射中使用级联,即 A 和 B 都是某个类 X 的实例,并且 X 的映射包含包含要成为对象的集合上的级联属性转入。

鉴于这一假设,这可能会有所帮助。

如果希望能够将对象从一个集合转移到另一个集合,则需要考虑被移动的事物是否应该具有独立于两个集合的存在。

如果传输对象没有单独保存,则在进行传输时会遇到问题,因为会话已经知道传输的对象。

我能想到的出路有两种。两者中更好的可能是将传输对象视为一个独立的对象,它自己保存到数据库中(即,在对象与集合的映射中不依赖于级联)。从概念上讲,这是有道理的,因为如果您可以将它从一个集合转移到另一个集合,这意味着它以某种方式独立于具有集合的两个对象。这确实意味着你最终可能会成为孤儿。

如果您想坚持在映射中使用级联,那么您将需要在与添加到对象 B 不同的事务中从对象 A 中删除。我怀疑这不是您想要做的。