NHibernate保存错误w / i数据库

时间:2009-04-22 01:51:51

标签: nhibernate

我在一个有很多孩子的NHibernate对象上调用Save 附在它上面。保存后,有时NHibernate会发生错误 开始插入我的sql数据库(“数据被截断了 从一种数据类型转换为另一种数据类型。“例如”。以下 是示例Exception的顶行。 NHibernate永远不会告诉我更多......它失败了。我的问题是,如何确定哪个表/列是我的保存错误中的罪魁祸首?

at System.Data.SqlServerCe.SqlCeCommand.ProcessResults(Int32 hr)   在System.Data.SqlServerCe.SqlCeCommand.ExecuteCommandText(IntPtr& pCursor,布尔& isBaseTableCursor)   在System.Data.SqlServerCe.SqlCeCommand.ExecuteCommand (CommandBehavior行为,String方法,ResultSetOptions选项)   在System.Data.SqlServerCe.SqlCeCommand.ExecuteNonQuery()   在NHibernate.AdoNet.AbstractBatcher.ExecuteNonQuery(IDbCommand CMD)   在NHibernate.Id.Insert.AbstractSelectingDelegate.PerformInsert (SqlCommandInfo insertSQL,ISessionImplementor session,IBinder 粘合剂)   在NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object [] fields,Boolean [] notNull,SqlCommandInfo sql,Object obj, ISessionImplementor会话)   在NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object []字段,Object obj,ISessionImplementor会话)   在NHibernate.Action.EntityIdentityInsertAction.Execute()

1 个答案:

答案 0 :(得分:1)

问题是SqlServerCe库中发生了错误。所以NHibernate不能告诉你什么是错的。

很可能您在映射文件中选择的数据类型与数据库中的数据类型不同(例如,模型中有数字,数据库中有varchar)。数据库执行隐式转换,如果失败,则会出现此错误。

您可以通过以下方式找到它:

  • 观察调试器中的值并尝试找到比通常更大的值
  • 读取您的映射文件和类声明,并将其与您的数据库模型进行比较
  • 使用SchemaExport导出模型,并将导出的模型与您的模型进行比较。