23 votes

Blob binaire tronqué à 8000 octets - SQL Server 2008 / varbinary(max)

J'ai mis à niveau à partir de Nhibernate Fluent 1.0 avec Nhibernate 2.1 pré- la version 1.x avec NHibernate 3.0 GA et ont frappé ce que je pense est une régression, mais je veux savoir si c'est effectivement le cas.

Je suis à l'aide de SQL Server Express 2008 et le MSSQL 2008 dialecte et ont une L'Image de la propriété de type de Système.De dessin.Image et j'ai mappé comme ce:

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

L' Image colonne de la table est de type varbinary(MAX).

L'généré hbm pour la propriété est:

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

Toutefois, peu importe ce que je fais le blob binaire est tronqué à 8000 octets lorsque sérialisé avec le courant FNH et NH versions. Qui ne l'a pas utilisé à être le cas avec les versions précédentes.

Idées de pourquoi cela se passe et comment résoudre le problème/solution de contournement, il?

22voto

sbeskur Points 1194

Moi aussi, j'ai rencontré un problème similaire et après beaucoup d'expérimentation, j'ai remarqué que lors de l'utilisation de Nhibernate pour générer mon schéma d'un fichier généré type de colonne est toujours de longueur 8000.

Réglage de CustomSqlType à Varbinary(max) comme suggéré ci-dessus ne fait pas de différence, cependant, ce travail autour de mon FluentMapping semblait faire l'affaire:

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

La longueur du parcours est une quantité arbitraire, mais je pense qu'il devrait être quelque chose de moins int.Max. Je suis nouvelle dans Nhibernate donc, je suis toujours de comprendre les choses, mais je serais intéressé de savoir si cela vous aide.

5voto

Michael Teper Points 1414

Dans 3.0.0 GA, le mappage suivant semble faire l'affaire:

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

4voto

Ivan Zlatev Points 4844

C'est une régression. J'ai soulevé un bug et a fourni les patchs https://nhibernate.jira.com/browse/NH-2484

1voto

Kev Points 227

Carte(x => x.Image).Longueur(100000).Pas.Nullable();

Ajouter la Longueur(MAXVALUE)' comme ci-dessus et ça marche :)

0voto

Rippo Points 10580

Avez-vous essayé?

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X