2009-03-25 2 views
6

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

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

ответ

4

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

1

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

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

+0

последний проект, я был на этом используется код gen'ed выключен ген кода на полпути, когда мы не могли постоянно обновлять генератор достаточно быстро .... – JoshBerke

+0

В ваше мнение, помимо того, что вы свободны, является MyGeneration лучшим кодом? – devXen

+0

Не хватает опыта с CodeSmith или другими, я считаю это изворотливым, но хорошим. Теперь он открыт с открытым исходным кодом, а шаблоны написаны на C# - все это плюсы. – MrTelly

1

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

Благодаря

-Blake Niemyjski

+0

Хотя я согласен с тем, что MyGeneration не обновлялось уже давно, в целях полного раскрытия информации стоит отметить, что вы являетесь активным разработчиком CodeSmith. – furtive

+0

Да, это правда. Я обновил большинство своих сообщений, чтобы указать это. –