NHibernate Mapping文件中如何指定类的字节数组属性

博客介绍了字节数组类型的属性映射,可用Byte[]指定Type,但只能保存8000个字节。若要保存任意长的字节数据,需用BinaryBlob类型,并以Employee类的Photo属性为例说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于字节数组类型的属性映射,可以用Byte[]指定其Type,但是这中类型只能保存8000个字节(虽然你可以指定超过8000的Length属性,而且生成的表字段类型也为Image)。 如果要保存任意长的字节数据,需要用到BinaryBlob类型。

举个例子,如果Employee类有一Photo属性为字节数组:

None.gifpublic class Employee
ExpandedBlockStart.gifContractedBlock.gif 
dot.gif{
InBlock.gif
//其他略去
InBlock.gif
  public byte[] Photo
ExpandedSubBlockStart.gifContractedSubBlock.gif  
dot.gif{
InBlock.gif   
get
ExpandedSubBlockStart.gifContractedSubBlock.gif   
dot.gif{
InBlock.gif    
return _photo;
ExpandedSubBlockEnd.gif   }

InBlock.gif   
set
ExpandedSubBlockStart.gifContractedSubBlock.gif   
dot.gif{
InBlock.gif    _photo 
= value;
ExpandedSubBlockEnd.gif   }

ExpandedSubBlockEnd.gif  }

ExpandedBlockEnd.gif}

在影射文件中可以用 BinaryBlob 类型:
None.gif<class name="Employee" table="[Employee]"> 
None.gif        
<id name="ID" column="EmployeeID" unsaved-value="0"> 
None.gif            
<generator class="native" /> 
None.gif
</id>
None.gif
<!--其他略去--> 
None.gif    
<property name="Photo" column="[Photo]" not-null="false"  type="BinaryBlob"/>    </class> 

另外,其他大对象的映射可参考下表:
NHibernate Type.NET TypeDatabase TypeRemarks
StringClobSystem.StringDbType.Stringtype="StringClob" must be specified. Entire field is read into memory.
BinaryBlobSystem.Byte[]DbType.Binarytype="BinaryBlob" must be specified. Entire field is read into memory.
SerializableAny System.Object that is marked with SerializableAttribute.DbType.Binarytype="Serializable" should be specified. This is the fallback type if no NHibernate Type can be found for the Property.

字节数组可以持久化之后,自然会担心内存占用问题。那么能不能对属性也做Lazy Initialization的实现呢?这可能是NHibernate要面对的新需求。

转载于:https://www.cnblogs.com/mahope/archive/2005/12/09/293408.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值