2009-12-15 97 views
3

我很喜欢在AutoMappings中使用Fluent NHibernate,但每次偶尔尝试创建流畅配置时都会遇到此运行时错误:'创建SessionFactory时使用了无效或不完整的配置。检查PotentialReasons集合和InnerException以获取更多详细信息。'Fluent NHibernate:调试FluentConfigurationException

现在这可能意味着各种各样的事情,但例外情况细节并没有什么帮助。有时NHibernate无法处理的类将在InnerException中列出,其他时候我得到这样的神秘消息:

{“(XmlDocument)(3,6):XML验证错误:元素'class'in命名空间'urn:nhibernate-mapping-2.2'在名字空间'urn:nhibernate-mapping-2.2'中有无效的子元素'property'。期望的可能元素列表:'meta,sublect,cache,synchronize,comment,tuplizer,在命名空间'urn:nhibernate-mapping-2.2'中使用'composite-id'。“}

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

编辑:

这个错误众所周知的原因:

  • 数据库连接(应该是的InnerException详细可见)
  • 在属性中没有virtual修饰符(应说明的InnerException详细型)
  • 缺少ID字段(如上所列给出非特定错误)

回答

2

以下是可能有用的链接 - debugging nhibernate exceptions。有提到设置日志记录,但我没有尝试过自己。

如果您尝试它,请告诉我们您是如何制作出来的。

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

+0

NHProfiler看起来不错,但我在价格上压价。我会尝试log4net解决方案并回报。 – Alex 2009-12-16 00:46:35

+0

日志记录有所帮助,但我认为我现在已经到了可以解密大多数异常的地步。 – Alex 2009-12-16 11:55:27

+0

如果伐木在这里有帮助,我会感到惊讶。我有这个错误,只是在NHibernate日志中发现了同样的东西 - 没有进一步的线索。而且你必须依靠第三方产品才能找出配置中导致这个错误的东西,这很荒谬。 – UpTheCreek 2010-04-22 18:00:10

3

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

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

如果您仔细阅读此错误消息,您会发现这是可能会丢失的内容之一。

+0

是啊,我已经有了一个完整的清单 - 我想我会将它们添加到原来的职位下一个人着想,搜索此错误。 – Alex 2009-12-15 20:46:47

+0

你说得对 - 我忘记了用我的标识符从抽象类派生出来。我已经给了你一点,但没有将其标记为回答,因为我的根本问题是试图找到一种更好的方法来进行流畅的配置调试。谢谢你的帮助! – Alex 2009-12-15 20:52:02

+0

是的,可能会很烦人 – UpTheCreek 2010-04-22 17:57:50