Nhibernate: неинициализированный прокси передан для сохранения - PullRequest
0 голосов
/ 23 декабря 2009

У меня проблема с NHibernate. Сообщение об ошибке:

Неинициализированный прокси передан для сохранения

[PersistentObjectException: Неинициализированный прокси передан для сохранения (). Объект: ...... Domain.Model ......] NHibernate.Event.Default.DefaultSaveEventListener.ReassociateIfUninitializedProxy (Объект obj, источник ISessionImplementor) +104 NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate (SaveOrUpdateEvent событие) + 90
NHibernate.Impl.SessionImpl.FireSaveOrUpdate (SaveOrUpdateEvent событие) + 156
NHibernate.Impl.SessionImpl.SaveOrUpdate (Объект объект) + 152

Итак, у меня есть сводный корень и коллекция объектов. При сохранении изменений я вызываю save только для совокупного корня. Дочерний класс не имеет ссылки на общий корень.

  <bag name="Children" cascade="all-delete-orphan" where="IsDeleted = 0" lazy="true">
    <key column="abcId"/>
    <one-to-many class="abc"/>
  </bag>

Теперь появляется ошибка, когда я собираю детей для сохранения из пользовательского интерфейса, например:

root = repository.GetRootById(id)

    // collect children from data list 
    abc = repository.GetAbcById(abcId) 
    abc.Name = textName.Text; 
    ...

    // no root.Children.Add(abc) is performed here, since abc already is a child of root    

    repository.Save(root); 
    ... 
    Exception occurs

Теперь, если я получаю доступ к root. Дети перед сохранением, это работает.

Любой

1 Ответ

0 голосов
/ 23 декабря 2009

Исправлено .. корень неинициализирован, потому что в репозитории .GetRootById (..) я использовал session.Load вместо session.Get. Так что рут никогда не загружался ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...