У меня есть объект с 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);работает нормально.Проблема только в том, как получить данные из таблицы