NHibernate集合和移动对象

NHibernate集合和移动对象,nhibernate,collections,Nhibernate,Collections,我刚刚遇到了一个与NHibernate有关的重大问题。我有两个对象,每个对象都有一组东西。我需要将一个对象从对象A的集合移动到对象B的集合。我得到一个关于已删除对象的错误,因为我相信,NHibernate在需要为对象B保留该对象时,会尝试从对象A的集合中删除该对象。 从数据库的角度来看,这只是将“parent”属性更新为新对象(对象B)的问题。但对于这些收藏品,我真的不知道该怎么做 在NHibernate中,是否有将对象从一个集合移动到另一个集合的众所周知的过程 提前感谢您的帮助 问候, Eri

我刚刚遇到了一个与NHibernate有关的重大问题。我有两个对象,每个对象都有一组东西。我需要将一个对象从对象A的集合移动到对象B的集合。我得到一个关于已删除对象的错误,因为我相信,NHibernate在需要为对象B保留该对象时,会尝试从对象A的集合中删除该对象。 从数据库的角度来看,这只是将“parent”属性更新为新对象(对象B)的问题。但对于这些收藏品,我真的不知道该怎么做

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

提前感谢您的帮助

问候,


Eric.

您是否尝试过使用

cascade=“全部删除孤立项”


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

考虑到这一假设,这可能会有所帮助

如果您希望能够将对象从一个集合转移到另一个集合,则需要考虑正在移动的对象是否存在独立于两个集合的存在。 如果传输对象无法单独保存,则在执行传输时会遇到问题,因为会话已经知道传输的对象

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


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

您是如何映射集合的?Rob,谢谢您的回答。就在几天后,我们放弃了NHibernate,由于某些原因,我不记得看到回复我的帖子的通知。无论如何谢谢你的帮助。