NHibernate对象引用未保存的瞬态实例,在刷新之前保存瞬态实例

Nag*_*han 16 c# nhibernate

我正在尝试保存一个复杂的对象,里面有许多引用的元素,它在大多数时候都能正常工作.
但是在某些情况下我们得到以下例外,

object引用未保存的瞬态实例 - 在刷新之前保存瞬态实例,或者将属性的级联操作设置为使其自动保存的内容.类型:Namespace.Core.Client.ClientDetails,Entity:Namespace.Core.Client.ClientDetails

问题是,我的复杂对象中有大约12个ClientDetails元素,我们正试图保存.有没有办法识别哪个对象实例导致了这个问题?通过NHibernate日志记录或其他方式?我的代码示例用于保存如下,

_repository.Save<SuperParent>(obj);
_repository.Flush();
Run Code Online (Sandbox Code Playgroud)

请注意,当我将Nhibernate show_sql设置为true时,我能够看到正确生成的所有查询,但是当调用flush时,抛出异常.

请帮助解决问题.

Fir*_*iro 15

该异常意味着ClientDetails此对象引用了未保存的实例.您必须在保存父项之前手动保存它

session.Save(Parent.SomeDetail);
Run Code Online (Sandbox Code Playgroud)

或者Cascade.SaveOrUpdate在父映射中设置引用映射.

  • `References(x => x.DetailProperty).Cascade.All();` (4认同)