2009-05-06 5 views
3

J'ai une colonne nvarchar (2000) dans une base de données SQL Server 2005, et ont cartographié en NHibernate comme:automatiquement tronquer les chaînes dans NHibernate/SQL Server

<property name="Query" column="`Query`" type="String" length="2000" not-null="false"/> 

La classe DTO présente juste une propriété de chaîne:

public virtual string Query { get; set; } 

Si je mets la requête à une chaîne de caractères> 2000 je reçois une exception du serveur SQL à l'effet de:

"La chaîne ou les données binaires sont tronquées à . La déclaration a été terminé. »

Ce que je veux est pour cette troncature juste se produire automatiquement et silencieusement. Je pourrais passer outre la propriété virtuelle et forcer la troncature sur l'ensemble de la propriété, mais qu'il devrait y avoir un moyen pour obtenir ce comportement par défaut, soit par la mise en correspondance NHibernate ou même en tant que paramètre de serveur SQL.

Suis-je manque quelque chose ... Je ne veux pas changer le schéma db pour permettre des chaînes plus longues.

Répondre

4

Créer un type d'utilisateur personnalisé et qui tronque la chaîne si elle est supérieure à 2000 caractères. Voici un exemple de creating User Type

<property name="Query" type="Common.Nhibernate.Types.StringTruncType, Common" column="`Query`" type="String" length="2000" not-null="false"/> 
Questions connexes