NHibernate保存错误w/i数据库

NHibernate保存错误w/i数据库,nhibernate,Nhibernate,我在一个有很多子对象的NHibernate对象上调用Save 附属于它。保存时,NHibernate有时会发生错误 开始插入到我的sql数据库(“数据在 从一种数据类型转换为另一种数据类型。下列的 是示例异常的顶行。尼伯内特告诉我的只是…它失败了。我的问题是,如何找出哪个表/列是save错误的罪魁祸首 位于System.Data.SqlServerCe.SqlCeCommand.ProcessResults(Int32小时) 位于System.Data.SqlServerCe.SqlCeComm

我在一个有很多子对象的NHibernate对象上调用Save 附属于它。保存时,NHibernate有时会发生错误 开始插入到我的sql数据库(“数据在 从一种数据类型转换为另一种数据类型。下列的 是示例异常的顶行。尼伯内特告诉我的只是…它失败了。我的问题是,如何找出哪个表/列是save错误的罪魁祸首

位于System.Data.SqlServerCe.SqlCeCommand.ProcessResults(Int32小时) 位于System.Data.SqlServerCe.SqlCeCommand.ExecuteCommandText(IntPtr& pCursor、Boolean和isBaseTableCursor) 在System.Data.SqlServerCe.SqlCeCommand.ExecuteCommand处 (命令行为、字符串方法、结果选项) 位于System.Data.SqlServerCe.SqlCeCommand.ExecuteNonQuery()处 在NHibernate.adonnet.AbstractBatcher.ExecuteOnQuery(IDbCommand cmd) 在NHibernate.Id.Insert.AbstractSelectingDelegate.PerformInsert (SqlCommandInfo插入SQL,ISessionImplementor会话,IBinder 活页夹) 位于NHibernate.Persister.Entity.AbstractEntityPersister.Insert(对象 []字段,布尔值[]notNull,SqlCommandInfo sql,对象obj, iSession(实施者会话) 位于NHibernate.Persister.Entity.AbstractEntityPersister.Insert(对象 []字段、对象对象、ISessionImplementor会话)
在NHibernate.Action.EntityIdentityInsertAction.Execute()中,问题是错误发生在SqlServerCe库中。所以NHibernate不能告诉你出了什么问题

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

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

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

好的,我没有很好地解释我的问题。我可以很容易地在我的本地开发设备上准确地跟踪数据库错误发生的位置(例如,打开NHibernate日志记录)。当有一个客户端使用应用程序时,出现了一个随机保存错误。我不知道(例外情况)它来自100多个表中的哪一个。我希望NHibernate告诉我错误发生时它正在刷新哪个实体。你不能在堆栈跟踪中看到这一点吗,当错误发生时你的应用程序在做什么?我遇到了这个问题,尽管我认为它更多的是关于SqlCe而不是NH。我需要知道哪个字段太长,以便向用户显示适当的错误消息。SqlCe引发的异常几乎没有说明什么。