Exception handling Fluent NHibernate:调试FluentConfigurationException

Exception handling Fluent NHibernate:调试FluentConfigurationException,exception-handling,fluent-nhibernate,Exception Handling,Fluent Nhibernate,我很喜欢将Fluent NHibernate与自动映射一起使用,但在尝试创建Fluent配置时,偶尔会出现以下运行时错误:“创建SessionFactory时使用了无效或不完整的配置。有关详细信息,请检查潜在原因集合和InnerException。” 现在,这可能意味着各种各样的事情,但是异常细节一点帮助都没有。有时NHibernate无法处理的类会列在InnerException中,有时我会收到如下神秘消息: {”(XmlDocument)(3,6):XML验证错误:命名空间“urn:nhib

我很喜欢将Fluent NHibernate与自动映射一起使用,但在尝试创建Fluent配置时,偶尔会出现以下运行时错误:“创建SessionFactory时使用了无效或不完整的配置。有关详细信息,请检查潜在原因集合和InnerException。”

现在,这可能意味着各种各样的事情,但是异常细节一点帮助都没有。有时NHibernate无法处理的类会列在InnerException中,有时我会收到如下神秘消息:

{”(XmlDocument)(3,6):XML验证错误:命名空间“urn:nhibernate-mapping-2.2”中的元素“class”在命名空间“urn:nhibernate-mapping-2.2”中具有无效的子元素“property”。可能的元素列表应为:“meta、subselect、cache、synchronize、comment、tuplizer、id、composite id”,在命名空间“urn:nhibernate-mapping-2.2”中

这并不能真正帮助我找到错误。有没有办法获得NHibernate试图做什么的详细日志(即,它当前自动映射的是什么类/方法),这样我至少可以确定导致问题的代码部分

编辑:

此错误的已知原因:

  • 数据库连接(应在InnerException详细信息中可见)
  • 属性上缺少虚拟修饰符(应在InnerException详细信息中指示类型)
  • 缺少ID字段(如上所列的非特定错误)

    • 欢迎来到NHibernate调试的精彩世界!我发现缺少有意义的错误消息是使用NHibernate最烦人的方面之一。不过,当它起作用时,非常酷

      这是一个猜测,但当我忘记将“Id”属性添加到我试图映射的一个类时,我看到了这条消息


      如果您在阅读错误消息时牢记这一点,您会发现这是可能缺少的内容之一。

      这里有一个可能有用的链接-。有人提到设置日志记录,但我自己还没有尝试过

      如果你试一下,请告诉我们你的情况


      另一个有用的链接-

      是的,我有一个完整的清单-我想我会将它们添加到原始帖子中,以便下一个搜索此错误的人。你是对的-我忘记了使用标识符从抽象类派生。我已经给出了一个要点,但没有将其标记为已回答,因为我的基本问题是试图找到一种更好的方法来进行流畅的配置调试。谢谢你的帮助!一旦您使用FNH一段时间,您就可以开始识别常见的错误,并且变得更容易。坚持住,这是值得的!NHProfiler看起来不错,但我对这个价格感到犹豫。我将尝试log4net解决方案并报告。日志记录很有帮助,尽管我认为我现在已经到了可以解密大多数异常的地步。如果日志记录在这里有很大帮助,我会感到惊讶。我有这个错误,只是在NHibernate日志中发现了相同的东西-没有进一步的线索。你必须依靠第三方产品来找出是什么导致了这个错误,这是很可笑的。第二个链接确实很有用,尽管+1链接起了作用。顺便说一句,自从我写了上面的内容之后,我已经让log4net工作了,它帮助我解决了至少一个问题,因为它提供了比异常跟踪更多的细节。值得一试。