2009-12-15 4 views
3

Мне нравится использовать Fluent NHibernate с AutoMappings, но время от времени я получаю эту ошибку времени выполнения при попытке создать свободную конфигурацию: 'При создании SessionFactory использовалась недействительная или неполная конфигурация. Для получения более подробной информации просмотрите коллекции PotentialReasons и InnerException. 'Fluent NHibernate: Отладка FluentConfigurationException

Теперь это может означать всевозможные вещи, но детали исключения не очень полезны вообще. Иногда класс, который NHibernate не обрабатывается, будет указан в InnerException, в других случаях я получаю такие мистические сообщения:

{"(XmlDocument) (3,6): Ошибка проверки XML: элемент 'class' в namespace 'urn: nhibernate-mapping-2.2' имеет недопустимый дочерний элемент 'property' в пространстве имен 'urn: nhibernate-mapping-2.2'. Список ожидаемых элементов: 'meta, subselect, cache, synchronize, comment, tuplizer, id, составной идентификатор 'в пространстве имен' urn: nhibernate-mapping-2.2 '. "}

Это действительно не помогает мне отслеживать ошибку. Есть ли способ получить подробный журнал того, что NHibernate пытается сделать (т. Е. Какой класс/метод он в настоящее время автоматически отображает), поэтому я могу хотя бы идентифицировать часть моего кода, вызывающего проблему?

редактировать:

Известных причинами этой ошибки:

  • подключение к базе данных (должен быть виден в InnerException подробно)
  • отсутствующей виртуальный модификатор свойств (следует указать тип в InnerException подробно)
  • Отсутствует поле идентификатора (содержит дополнительную ошибку, как указано выше)

ответ

2

Вот ссылка, которая может быть полезна - debugging nhibernate exceptions. Есть упоминание о настройке регистрации, но я не пробовал это сам.

Если вы попробуете, сообщите нам, как вы разобрались.

Другая полезная ссылка - troubleshooting common mapping bugs with nhibernate

+0

NHProfiler выглядит хорошо, но я боюсь по цене. Я попробую решение log4net и отчитаюсь. – Alex

+0

Ведение журнала помогает, хотя я думаю, что добрался до сути, где я могу расшифровать большинство исключений. – Alex

+0

Я был бы удивлен, если многое поможет здесь. У меня была эта ошибка, и я нашел то же самое в журнале NHibernate - никаких дальнейших подсказок. И смешно, что вам придется полагаться на сторонний продукт, чтобы узнать, что в конфигурации вызывает эту ошибку. – UpTheCreek

3

Добро пожаловать в замечательный мир отладки NHibernate! Я считаю отсутствие значимых сообщений об ошибках одним из самых раздражающих аспектов работы с NHibernate. Однако довольно круто, когда он работает.

Это дикое предположение, но я видел это сообщение , когда я забыл добавить свойство «Id» в один из классов, которые я пытаюсь отобразить.

Если вы прочитали сообщение об ошибке с учетом этого, вы увидите, что это одна из вещей, которые потенциально отсутствуют.

+0

Да, у меня есть целый перечень - Я думаю, что я буду добавлять их в исходное сообщение для следующего человека искать эту ошибку. – Alex

+0

Вы были правы - я забыл извлечь из абстрактного класса свой идентификатор. Я дал вам точку, но не отметил ее как ответ, так как мой основной вопрос заключается в том, чтобы найти лучший способ подходить к плавной отладке конфигурации. Спасибо за вашу помощь! – Alex

+0

Да, может быть очень неприятно – UpTheCreek