2010-09-13 1 views
18

Mon schéma DB a une chaîne en tant que varchar (max). J'ai lu l'autre questions concernant la définition de la longueur à plus de 4000 ou 8000 pour qu'il génère vraiment un (n) varchar (max) dans le mapping mais quand j'utilise Length (10000) dans ma classe de mapping, le fichier hbm montre réellement = "10000" et si je sauvegarde une entité avec plus de 10000 caractères, elle est en réalité tronquée à exactement 10000 caractères.Comment stocker une chaîne varchar (max) non tronquée avec NHibernate et Fluent NHibernate

Je ne veux pas de troncature.

(en utilisant NH3-alpha2 et le tronc FNH)

Répondre

21

Il semblerait que ce soit un problème ancien qui est maintenant refait surface dans 3.x NHibernate construit; vous pouvez lire sur les solutions de contournement here.

Note: J'ai mis à jour le lien d'origine que j'ai posté car il était obsolète.

+4

Appel CustomType ("StringClob") a fait. THX. –

+0

M'a aussi aidé, merci –

+0

Dans un fichier de mapping hbm, utilisez simplement type = "StringClob" au lieu de type = "string" et vous avez terminé. Cela fonctionne définitivement pour NH 3.3, mais essayez-le avec n'importe quelle version NH> = 3.0. – Oliver

17

Cette cartographie devrait fonctionner:

<property name="TheProperty" type="StringClob"> 
    <column name="TheColumn" sql-type="nvarchar(max)" /> 
</property> 

suffit de regarder pour l'équivalent fluide.

+2

pensez-vous que cela sera traité correctement dans NHib 3? Un peu triste de voir les détails spécifiques du serveur sql fuir dans la cartographie comme ceci ... – DanP

+0

@DanP pouvez-vous ouvrir un problème Jira? –

+0

Je crois qu'il y en a déjà un: http://216.121.112.228/browse/NH-2302 Soit dit en passant ... seriez-vous intéressé par un nom de domaine donné pour le JIRA ou quelque chose? Avoir une URL basée sur IP semble un peu ... gênant;) – DanP

Questions connexes