Частично загруженные объекты в Nhibernate - PullRequest
0 голосов
/ 09 декабря 2011

У меня есть объект с Blob, и мне нужно загрузить этот BLOB-объект ленивым или чуть позже (для этого можно вызвать другой метод). В соответствии с http://ayende.com/blog/4377/nhibernate-new-feature-lazy-properties nhibernate поддерживает свойство отложенной загрузки.У меня есть простое отображение

 Id(x => x.Id);
 Map(x => x.Name).Length(45);
 Map(x => x.Value).LazyLoad();
 Map(x => x.Description).Length(200);
 Version(x => x.CreatedDate);
 HasManyToMany(x => x.ProductVariants);

И мой объект имеет:

 public virtual int Id {get;set;}
 public virtual string Name { get; set; }
 public virtual byte[] Value { get; set; }
 public virtual string Description { get; set; }
 public virtual DateTime CreatedDate { get; set; }
 public virtual IList<ProductVariant> ProductVariants { get; set; } 

Я пытаюсь получить объект с помощью:

 using (var session = GetSessionFactory().OpenSession())
        {
            return session
                .CreateCriteria<DataResource>()
                .List<DataResource>()
                .ToArray();
        }

Но это не удается с:

Checks loading of data resource: NHibernate.PropertyAccessException : Invalid Cast (check your mapping for property type mismatches); setter of ***.DataResource
  ----> System.InvalidCastException : Unable to cast object of type 'System.Object' to type 'System.Byte[]'.

Но когда я удаляю .LazyLoad () для поля Значение - все работает.Что я делаю неправильно?Моя версия Nhibernate - 3.1.0.4000

Загрузка этого свойства не требуется.Я просто пока не хочу его загружать (загрузка будет выполнена в другой части приложения).Я видел некоторые решения этой проблемы в Интернете, однако большинство из них использует отдельный ленивый класс или пользовательский запрос.Но мне нужно иметь одну таблицу и один класс для этого сопоставления, а написание пользовательских запросов запрещено.

Upd: Забыли добавить этот сеанс. Сохранить (dataResource);работает нормально.Проблема только в том, как получить данные из таблицы

...