Iva*_*tev 23 nhibernate fluent-nhibernate sql-server-2008-express
我已经使用Nhibernate 2.1从Fluent Nhibernate 1.0升级到使用NHibernate 3.0 GA预发布1.x并且达到了我认为的回归,但我想知道是否确实如此.
我使用的是SQL Server Express 2008和MSSQL 2008方言,并且具有System.Drawing.Image类型的Image属性,我已将其映射为:
Map (food => food.Image)
.Length (int.MaxValue)
.Nullable ();
Run Code Online (Sandbox Code Playgroud)
Image表中的列是类型varbinary(MAX).
生成的属性的hbm是:
<property name="Image" type="System.Drawing.Image, System.Drawing,
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<column name="Image" length="2147483647" not-null="false" />
</property>`
Run Code Online (Sandbox Code Playgroud)
但是无论我做什么,当使用当前的FNH和NH版本序列化时,二进制blob被截断为8000字节.以前的版本不是这种情况.
想法为什么会这样,以及如何解决/解决它?
sbe*_*kur 22
我也遇到了类似的问题,经过多次实验后,我注意到当使用Nhibernate生成我的模式到文件时,生成的列类型总是长度为8000.
如上所述将设置CustomSqlType设置为Varbinary(max)没有区别,但是,在我的FluentMapping中解决此问题似乎可以解决问题:
Map(x => x.LogoBytes).CustomType("BinaryBlob").Length(1048576).Nullable();
Run Code Online (Sandbox Code Playgroud)
当然长度是任意数量,但我认为它应该设置为小于int.Max.我是Nhibernate的新手,所以我还在想办法,但我很想知道这对你有帮助.
在3.0.0GA中,以下映射似乎可以解决问题:
<property name="Data" type="Serializable" length="2147483647" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10395 次 |
| 最近记录: |