Как обрабатывать отложенную загрузку свойств в типе пользователя NHiberate - PullRequest
3 голосов
/ 02 августа 2011

Я использую NHibernate 3.1. У меня есть тип пользователя, который представляет System.Drawing.Image. Он прекрасно работает, пока я не изменил отображение свойства изображения, чтобы включить отложенную загрузку для свойства.

В определенный момент NHibernate решает обновить сущность, которая имеет свойство изображения. В следующем методе пользовательского типа value имеет значение, которое не является действительным Image:

public void NullSafeSet(IDbCommand cmd, object value, int index) 
{
    ...
}

Очевидно, что это так, потому что свойство image не было доступно, поэтому механизм отложенной загрузки не был запущен. Чего я не понимаю, так это того, что значение не null, но быстрое наблюдение в отладчике не дает мне никаких подробностей об экземпляре, кроме того, что это «объект». Может быть, это какой-то экземпляр прокси-сервера?

Так что теперь я ищу способ эффективно заставить NHibernate воздерживаться от обновления свойства, когда оно не изменилось. Простой возврат из метода сразу не работает, потому что затем выдается исключение, заявляющее, что значение свойства отсутствует.

1 Ответ

1 голос
/ 05 сентября 2011

Вы должны быть в состоянии заставить NHibernate воздерживаться от обновления свойства, объявив свойство как один-к-одному (или многие-к-одному, в зависимости от вашего сценария) с помощью cascade="none", вместо «прямого"собственность предприятия.

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