exception-handling - 流畅的 NHibernate : Debugging FluentConfigurationException

标签 exception-handling fluent-nhibernate

我很喜欢将 Fluent NHibernate 与 AutoMappings 结合使用,但在尝试创建 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 字段(给出上面列出的非特定错误)
  • 最佳答案

    欢迎来到 NHibernate 调试的奇妙世界!我发现缺少有意义的错误消息是使用 NHibernate 最烦人的方面之一。然而,当它工作时非常酷。

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

    如果您在阅读错误消息时考虑到这一点,您会发现这是可能遗漏的内容之一。

    关于exception-handling - 流畅的 NHibernate : Debugging FluentConfigurationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1909880/

    相关文章:

    multithreading - 并发 Haskell 异常

    c# - 如何从异步方法向调用者抛出异常?

    c# - Exception.Message 与 Exception.ToString()

    nhibernate - 具有流畅 nHibernate 自动映射的属性过滤器

    c# - NHibernate 不同 session 间数据不一致

    nhibernate - Fluent NHibernate 1.2 - 动态程序集中不支持被调用的成员

    c# - Fluent Nhibernate List<string> 映射

    c++ - C++ 中模板化异常类的多重继承

    Java - 找到异常的第一个原因

    c# - Nhibernate 和 MySQL 的 BLOB 索引前缀长度