Je suis en train de déboguer une erreur de troncature intermittente dans mon application. L'erreur dans mes journaux ressemble à ceci:Débogage Erreur "Chaîne ou données binaires qui seraient tronquées" dans nHibernate
System.Data.SqlClient.SqlException: String or binary data would be truncated.
The statement has been terminated. Generated: Tue, 02 Nov 2010 03:55:18 GMT
NHibernate.Exceptions.GenericADOException: could not insert:
[DataModel.Product][SQL: INSERT INTO [Product] (Fields) VALUES (?, ?,...);
select SCOPE_IDENTITY()] --->
System.Data.SqlClient.SqlException: String or binary data would be truncated.
The statement has been terminated.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
Notez que l'erreur ne fournit pas les valeurs des paramètres pour le sql qui a jeté l'erreur, que des espaces réservés: (?, ?,...)
. Y a-t-il un moyen de les obtenir de nHibernate? Quelque chose comme ceci:
try {
...
Session.Flush(); // throws
}
catch (GenericADOException ex) {
// want to get the bad parameter values,
// so I can re-throw a more helpful exception
}