gpt4 book ai didi

c# - NHibernate 对象引用一个未保存的 transient 实例在刷新之前保存 transient 实例

转载 作者:可可西里 更新时间:2023-11-01 03:09:05 27 4
gpt4 key购买 nike

我正在尝试保存一个复杂的对象,该对象内部有许多引用元素,而且它在大多数情况下都能完美运行。
但是在某些情况下,我们会遇到以下异常,

object references an unsaved transient instance - save the transient instance before flushing or set cascade action for the property to something that would make it autosave. Type: Namespace.Core.Client.ClientDetails, Entity: Namespace.Core.Client.ClientDetails

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

_repository.Save<SuperParent>(obj);
_repository.Flush();

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

请帮助解决问题。

最佳答案

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

session.Save(Parent.SomeDetail);

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

关于c# - NHibernate 对象引用一个未保存的 transient 实例在刷新之前保存 transient 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20027493/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com