如何通过Fluent NHibernate级联从会话中逐出对象

如何通过Fluent NHibernate级联从会话中逐出对象,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我有一个嵌套对象(带有子对象的对象),我想从一个数据库中与活动会话相关联的存储库中检索它,将其逐出,并将其保存在另一个数据库中(不同的会话、不同的连接字符串、不同的存储库)。我试过: myISession.Evict(myObjectInstance); 我的MappingConfiguration已更改 Conventions.Add(DefaultCascade.All()) 适用于所有类型 但我仍然得到“NHibernate.HibernateException:非法尝试将集合与两个打

我有一个嵌套对象(带有子对象的对象),我想从一个数据库中与活动会话相关联的存储库中检索它,将其逐出,并将其保存在另一个数据库中(不同的会话、不同的连接字符串、不同的存储库)。我试过:

myISession.Evict(myObjectInstance);
我的MappingConfiguration已更改

Conventions.Add(DefaultCascade.All())
适用于所有类型


但我仍然得到“NHibernate.HibernateException:非法尝试将集合与两个打开的会话关联”。如何删除与原始会话的关联?

好的,原来是我的对象,在本例中,myObjectInstance由来自两个不同会话的对象组成,我们称它们为A和B。myObjectInstance具有来自会话A的属性myProp1,会话B中的myProp2。然后我将整个myObjectInstance存储在会话B中

不幸的是,我试图从会话A中逐出myObjectInstance,而不仅仅是myProp1

解决办法是:

NHibernateUtil.Initialize(myObjectInstance.myProp1); //eager load object being evicted.
_dataSession.Evict(myObjectInstance.myProp1);
MyObjectRepository.Save(myObjectInstance);