2009-07-24 7 views
0

Dans une base de données SQL Server, j'ai une colonne Name dans la table Departments, avec nvchar (25) not null, unique. Je vérifie pour voir ce qui se passe si j'essaie de sauvegarder un département avec un nom plus grand que celui-là et que je reçois une exception "NHibernate.Exceptions.GenericADOException" indiquant clairement que "" les données String ou binaires seront tronquées ". Dans une autre table, j'ai une colonne Description dans une table Projects, avec nvchar (50) non null, mais pas la contrainte unique, je la mets à travers exactement le même test (bien sûr que la description est plus grande que 50), mais aucune exception n'est levée ...db longueur des erreurs de chaîne et NHibernate

Je préfère l'exception très claire, mais je me contenterai de comprendre quelles sont les règles. Qu'est-ce que je manque?

Cheers,
Berryl

RÉPONSE

ma faute! J'utilisais un appareil de test qui utilisait SqlLite au lieu de SqlServer. C'est l'une des raisons pour lesquelles j'ai arrêté d'utiliser SqlLite en premier lieu (il doit y avoir une raison pour laquelle tant de personnes intelligentes semblent l'aimer, mais cela ne sert à rien de vérifier la cartographie nhibernate IMO).

Merci!

Répondre

0

Ces erreurs sont générées par MS SQL Server et non par nHibernate. Vous devriez essayer d'exécuter certaines requêtes directement à l'aide de SQL Server Management Studio pour déterminer ce qui se passe.

+0

Y a-t-il une question particulière que vous avez à l'esprit pour expliquer cela? – Berryl

2

Le comportement est contrôlé par l'option ANSI WARNINGS:

si un INSERT ou UPDATE est essayé sur un caractère , Unicode ou colonne binaire dans lequel la longueur d'une nouvelle valeur dépasse la taille maximale de la colonne

L'option est une option par base de données.

Questions connexes