Использование NHibernate с Codesmith для генерации ORM - PullRequest
6 голосов
/ 25 марта 2009

Только начал изучать NHiberate. Кажется довольно утомительным писать правильные файлы конфигурации hbm.xml для каждой таблицы базы данных.

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

Ответы [ 3 ]

4 голосов
/ 25 марта 2009

Вы можете использовать шаблоны кода, но это все равно создает боль ИМХО. Лучше всего использовать Fluent nHibernate . У них есть новая функция автоматического сопоставления, которая использует конфигурацию по соглашению. Нет файлов сопоставления, он только предполагает, что вы используете похожие имена, и может определять правила преобразования имени объекта в имя таблицы.

1 голос
/ 30 октября 2009

Я работаю на CodeSmith ... Пожалуйста, имейте в виду, что MyGeneration не обновлялся вечно, что означает, что ему также не хватает поддержки. CodeSmith полностью поддерживает свои продукты и шаблоны. Это означает, что любые ошибки шаблона также будут исправлены и проверены Codesmith.

Спасибо

Блейк Немийский

1 голос
/ 25 марта 2009

Генерация кода может действительно заполнить этот пробел, я начал использовать CodeSmith, но потом они сделали это платной статьей, поэтому я перешел на MyGeneration . Мой подход заключается в том, чтобы сначала атаковать БД, генерировать файлы Mapping и кодировать классы gen, если они еще не существуют. Это очень быстро работает, отлично подходит для прототипа и создания тестовых данных.

Файлы отображения, классы и БД часто затем изменяются вручную. В некоторых случаях я пытался заставить генерацию кода работать как часть CI - но это оказалось трудным сделать, если вы не дисциплинированы в том, где вы работаете, вы вносите изменения в код, созданные вручную. Частичные занятия помогли, но все же есть вероятность, что вся команда окажется на одной странице, никто не хочет, чтобы их код перезаписывался инструментом, даже если вы можете затем выполнить откат и объединить.

...