Обнаружение и прикрепление прокси в Nhibernate - PullRequest
0 голосов
/ 09 декабря 2011

Я использую ленивое свойство в объекте.1) Мне нужно загрузить объект без этого свойства, отсоединить его от сеанса.2) Затем мне нужно повторно присоединить этот объект к вновь созданному сеансу и загрузить это свойство.

Итак, я получаю данные из базы данных (1):

 return session
                .CreateCriteria<DataResource>()
                .List<DataResource>()
                .ToArray();

Чем япытаясь присоединить его и выполнить (2):

using (ISession session = GetSessionFactory().OpenSession())
        {
            session.Update(dataResource);
            NHibernateUtil.Initialize(dataResource.Value);
        }

В случае, если лень была на ссылке один-ко-многим - все работает нормально.(1) step возвращает мой реальный объект с прокси, установленным на это свойство, а после (2) step он становится реальным объектом.Но в случае, когда мне нужна лень на объекте, кажется, что NHibernate не может справиться с этим с реальным объектом.Вместо этого он возвращает прокси после шага (1).Затем на шаге (2) он генерирует исключение MappingException: не сохраняется для: Castle.Proxies.DataResourceProxy в строке .Update ().Каким-то образом он не может распознать свой собственный прокси.

1 Ответ

0 голосов
/ 12 декабря 2011

Вы можете снять с прокси объект перед отсоединением от сеанса.Для отмены прокси см. Ссылку

NHibernate Получить объекты без прокси

...