type tamaño que length insertar data almacena nhibernate fluent-nhibernate sql-server-2008-express

nhibernate - que - varbinary sql server tamaño



Blob binario truncado a 8000 bytes-SQL Server 2008/varbinary(max) (5)

¿Has probado esto?

Map(x => x.Image).CustomSqlType("VARBINARY(MAX)");

He actualizado de Fluent Nhibernate 1.0 con Nhibernate 2.1 a la versión 1.x con NHibernate 3.0 GA y he alcanzado lo que creo que es una regresión, pero quiero saber si ese es el caso.

Estoy usando SQL Server Express 2008 y el dialecto MSSQL 2008 y tengo una propiedad de Imagen de tipo System.Drawing.Image y la he mapeado así:

Map (food => food.Image) .Length (int.MaxValue) .Nullable ();

La columna Image en la tabla es de tipo varbinary(MAX) .

El hbm generado para la propiedad es:

<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>`

Sin embargo, no importa lo que haga, el blob binario se trunca a 8000 bytes cuando se serializa con las versiones actuales de FNH y NH. Ese no solía ser el caso con versiones anteriores.

¿Ideas de por qué sucede esto y cómo solucionarlo / solucionarlo?


En 3.0.0GA, la siguiente asignación parece hacer el truco:

<property name="Data" type="Serializable" length="2147483647" />



Mapa (x => x.Imagen) .Length (100000) .Not.Nullable ();

Agregue la ''Longitud (MAXVALUE)'' como se muestra arriba y funcionará :)


Yo también he encontrado un problema similar y, después de mucha experimentación, noté que al usar Nhibernate para generar mi esquema en un archivo, el tipo de columna generado siempre tenía una longitud de 8000.

Establecer la configuración de CustomSqlType en Varbinary (max) como se sugirió anteriormente no hizo ninguna diferencia, sin embargo, esta solución en mi FluentMapping pareció hacer el truco:

Map(x => x.LogoBytes).CustomType("BinaryBlob").Length(1048576).Nullable();

La duración del curso es una cantidad arbitraria, pero creo que debería establecerse en algo menos que int.Max. Soy nuevo en Nhibernate, así que todavía estoy pensando en las cosas, pero me gustaría saber si esto te ayuda.