代码之家  ›  专栏  ›  技术社区  ›  Alex

fluent nhibernate:调试fluentconfigurationexception

  •  3
  • Alex  · 技术社区  · 15 年前

    我很喜欢在automappings中使用fluent nhibernate,但在尝试创建fluent配置时偶尔会遇到这个运行时错误: 创建SessionFactory时使用了无效或不完整的配置。查看potentialreasons集合和innerException以了解更多详细信息。

    现在,这可能意味着各种各样的事情,但是异常细节根本没有什么帮助。有时nhibernate无法处理的类将列在innerException中,其他时候我会收到类似这样的神秘消息:

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

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

    编辑:

    此错误的已知原因:

    • 数据库连接(应在InnerException详细信息中可见)
    • 属性上缺少虚拟修饰符(应在innerException详细信息中指示类型)
    • 缺少id字段(给出了上面列出的非特定错误)
    2 回复  |  直到 15 年前
        1
  •  2
  •   Tom Bushell    15 年前

    这里有一个可能有用的链接- debugging nhibernate exceptions . 有人提到要建立日志记录,但我自己没有试过。

    如果你试试,请告诉我们你是怎么做的。

    另一个有用的链接- troubleshooting common mapping bugs with nhibernate

        2
  •  3
  •   Tom Bushell    15 年前

    欢迎来到NHibernate调试的奇妙世界!我发现缺少有意义的错误消息是使用nhibernate最烦人的方面之一。不过,这很酷。

    这是一个疯狂的猜测,但我看到了这个消息 当我忘记添加“id”属性时 我正试图映射到其中一个类。

    如果您在阅读错误消息时考虑到这一点,您将看到这是可能丢失的内容之一。