Reputation: 11
I am calling Save on an NHibernate object that has many children attached to it. Upon save, sometimes an error happens when NHibernate starts inserting into my sql database ("The data was truncated while converting from one data type to another." for instance). Following are the top lines of an example Exception. NHibernate never tells me more than just...it failed. My question is, how do I figure out which table/column is the culprit within my save error?
at System.Data.SqlServerCe.SqlCeCommand.ProcessResults(Int32 hr) at System.Data.SqlServerCe.SqlCeCommand.ExecuteCommandText(IntPtr& pCursor, Boolean& isBaseTableCursor) at System.Data.SqlServerCe.SqlCeCommand.ExecuteCommand (CommandBehavior behavior, String method, ResultSetOptions options) at System.Data.SqlServerCe.SqlCeCommand.ExecuteNonQuery() at NHibernate.AdoNet.AbstractBatcher.ExecuteNonQuery(IDbCommand cmd) at NHibernate.Id.Insert.AbstractSelectingDelegate.PerformInsert (SqlCommandInfo insertSQL, ISessionImplementor session, IBinder binder) at NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object [] fields, Boolean[] notNull, SqlCommandInfo sql, Object obj, ISessionImplementor session) at NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object [] fields, Object obj, ISessionImplementor session) at NHibernate.Action.EntityIdentityInsertAction.Execute()
Upvotes: 0
Views: 801
Reputation: 64628
The problem is that the error happens in the SqlServerCe library. So NHibernate can't tell you what's wrong.
Most probably you have chosen a datatype in the mapping file that is not the same in the database (eg. you have a number in the model and a varchar in the database). The database performs a implicit cast, and if it fails, you get this error.
You can find it by:
Upvotes: 1