我有一个Blob的对象,我需要加载该blob懒惰或稍后(可以调用另一种方法) 根据{{3}} 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[]'.
但是当我为Value字段删除.LazyLoad()时 - 一切正常。 我究竟做错了什么?我的Nhibernate版本是3.1.0.4000
不要求加载延迟该属性。我现在根本不想加载它(它将在应用程序的另一部分中加载完成)。我在互联网上看到了这个问题的一些解决方案,但是大多数都使用单独的懒类或自定义查询。但我需要有一个表和一个类用于此映射,并且禁止编写自定义查询。
Upd:忘了添加那个session.Save(dataResource);工作正常。问题仅在于如何从表中获取数据