Как защититься от неполных отображений NHibernate - PullRequest
2 голосов
/ 13 февраля 2012

Я новичок в NHibernate / FluentNHibernate.Сейчас я использую FNH для своего кодирования, так как считаю, что его проще использовать.Тем не менее, я работаю с существующей кодовой базой, написанной на NHibernate.Сегодня я обнаружил ошибку в коде, когда база данных не обновлялась должным образом.Примерно через 30 минут я обнаружил, что не обновлял xml сопоставления, хотя и добавил новую переменную класса - поэтому строка в таблице не обновлялась.У меня вопрос, есть ли способ легко идентифицировать такие неполные сопоставления с помощью NHibernate, чтобы мне не приходилось всегда вручную проверять сопоставление, когда что-то идет не так?т.е. предупреждающее сообщение, если я обновляю объект, который имеет данные не по умолчанию для любых полей, которые не сопоставлены?

Ответы [ 3 ]

3 голосов
/ 13 февраля 2012

Посмотрите на класс PersistenceSpecification в FluentNHibernate: http://wiki.fluentnhibernate.org/Persistence_specification_testing

Вы можете обернуть это, используя рефлексию, чтобы проверить каждое свойство, если это имеет смысл для вашей системы.

1 голос
/ 13 февраля 2012

Вы также можете попытаться использовать метаданные отображения NHibernate и искать несопоставленные свойства с помощью отражения в UnitTest.

При использовании метаданных прозрачно для вашего приложения, если вы используете беглый nhibernate или другие средства для создания отображения nhibernate.

Если вы протестируете свои сопоставления в UnitTests, вы узнаете во время тестирования, а не во время запуска приложения, в порядке ли ваши сопоставления.

Этот вопрос кажется связанным, а показывает, как запрашивать метаданные .

0 голосов
/ 14 февраля 2012

Ошибка, при которой база данных не обновлялась, может быть вызвана проблемами, не связанными с полем / свойством. Могут быть и другие ошибки отображения, которые невозможно отразить с помощью отражения. Что если вы использовали неправильный каскад или неправильный генератор? Или забыли сопоставление ассоциации?

Если вы хотите выявить большинство проблем с отображением, вам следует создать интеграционный тест, который будет выполняться для реальной базы данных или базы данных в памяти. Хороший обзор этого подхода здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...