Объект NHibernate ссылается на несохраненный экземпляр переходного процесса, сохраняя временный экземпляр перед промывкой - программирование

Объект NHibernate ссылается на несохраненный экземпляр переходного процесса, сохраняя временный экземпляр перед промывкой

Я пытаюсь сохранить сложный объект, который содержит много ссылочных элементов внутри, и он отлично работает в большинстве случаев.
Однако в некоторых случаях мы получаем исключение ниже,

ссылается объект на несохраненный экземпляр переходного процесса - сохраняет временный экземпляр перед сбросом или устанавливает действие каскада для свойства на то, что сделает его автосохранением. Тип: Namespace.Core.Client.ClientDetails, Entity: Namespace.Core.Client.ClientDetails

Проблема в том, что в моем сложном объекте, который мы пытаемся сохранить, есть около 12 элементов ClientDetails. Есть ли способ определить, какой экземпляр объекта вызвал эту проблему? путем регистрации в NHibernate или каким-либо другим способом? Мой образец кода, используемый для сохранения, как показано ниже,

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

Обратите внимание, что когда я устанавливаю Nhibernate show_sql в true, я могу видеть все корректно сгенерированные запросы, но когда вызывается флеш, генерируется исключение.

Пожалуйста, помогите решить проблему.

4b9b3361

Ответ 1

Исключение означает, что существует несохраненный экземпляр ClientDetails, на который ссылается этот объект. Вы должны либо сохранить его вручную, прежде чем сохранять родительский

session.Save(Parent.SomeDetail);

или установите Cascade.SaveOrUpdate в сопоставлениях ссылок в родительском сопоставлении.

Ответ 2

Если вы внимательно прочитали:

... он временный экземпляр перед промывкой или установить каскадное действие для свойства, которое сделает его автосохранением

Итак, возможно, вы можете добавить Cascade в ссылку, например:

References(x => x.ClientDetails).Cascade.All().Column("ClientDetailsId")
                  .Not.Nullable();  //Or nullable, this depends on your schedule