Во время учебы я использовал NHibernate для небольших проектов, которые в основном кодировал и разрабатывал сам. Теперь, перед тем, как начать какой-то более крупный проект, возникло обсуждение того, как разработать доступ к данным и использовать ли уровень ORM. Поскольку я все еще учусь и считаю себя новичком в корпоративном программировании, я действительно не пытался настаивать на своем мнении, которое заключается в том, что использование объектно-реляционного сопоставителя базы данных может значительно облегчить разработку. Другие кодеры в команде разработчиков гораздо более опытны, чем я, поэтому я думаю, что буду просто делать то, что они говорят. :-)
Однако я не совсем понимаю две основные причины, по которым я не использую NHibernate или аналогичный проект:
- Можно просто создать собственные объекты доступа к данным с помощью SQL-запросов и скопировать эти запросы из Microsoft SQL Server Management Studio.
- Отладка ORM может быть сложной.
Итак, конечно, я мог бы просто создать свой уровень доступа к данным с большим количеством SELECT
s и т. Д., Но здесь я упускаю преимущества автоматических соединений, ленивых классов прокси и меньших усилий по обслуживанию, если таблица получает новый столбец или столбец получает переименован. (Обновление многочисленный SELECT
, INSERT
и UPDATE
запросы против обновления отображения конфигурации и , возможно , рефакторинга бизнес - классы и DTOs.)
Кроме того, при использовании NHibernate вы можете столкнуться с непредвиденными проблемами, если не очень хорошо знаете фреймворк. Это может быть, например, доверие к Table.hbm.xml, где вы устанавливаете длину строки для автоматической проверки. Однако я также могу представить себе подобные ошибки в «простом» уровне доступа к данным на основе запросов SqlConnection.
Наконец, действительно ли упомянутые выше аргументы являются хорошей причиной не использовать ORM для нетривиального корпоративного приложения на основе базы данных? Возможно, они / я пропустили другие аргументы?
(Я должен, вероятно, добавить, что я думаю, что это похоже на первое «большое» приложение на основе .NET / C #, которое потребует командной работы. Хорошие практики, которые считаются вполне нормальными в Stack Overflow, такие как модульное тестирование или непрерывная интеграция, не являются -существует здесь до сих пор.)