【发布时间】:2011-06-20 20:54:47
【问题描述】:
延迟加载类型为 byte[] 的属性是否存在任何已知问题?我在 sql server 2008 db 上有一个图像列,我试图将它映射到一个类的 byte[] 属性中。因为我不想总是加载它,所以我已经对其进行了配置,以便它使用延迟加载。代码如下:
public class Documento : Entity, IHasAssignedId<Int32> {
public virtual Byte[] Bytes { get; private set; }
//...more properties
}
这是映射:
Map( doc => doc.Bytes, "Documento" )
.CustomSqlType( "image" )
.CustomType<Byte[]>( )
.LazyLoad( )
.Not.Nullable( );
现在,问题是当我尝试使用 PersistenceSpecification 检查映射时,我得到一个异常,上面写着:
NHibernate.PropertyAccessException : Invalid Cast(检查您的映射是否有属性类型不匹配); Sra.Assistencias.Documento 的二传手 ----> System.InvalidCastException:无法将“System.Object”类型的对象转换为“System.Byte[]”类型。
如果我将属性配置为不使用延迟加载,或者我将其类型更改为 Object(保持 db 映射不变),一切正常。有什么想法吗?
【问题讨论】:
标签: nhibernate fluent-nhibernate nhibernate-mapping bytearray lazy-loading