Мы совсем недавно прошли процесс выбора между Entity Framework и NHibernate. Хотя моя первоначальная склонность заключалась в том, чтобы склоняться к NHibernate, учитывая, что послужной список Microsoft по фактическому использованию технологии был здесь менее чем звездным в последние несколько лет (например, Linq To SQL, мертв в версии 1 или для более свежего примера когда MS решила отказаться от клиентских шаблонов библиотеки ASP.NET Ajax, проверьте this ), мы все же решили использовать Entity Framework.
Мы выбрали его по следующим причинам:
Еще неизвестно, был ли переход на Entity Framework правильным выбором. Всегда есть шанс, что Microsoft может вытащить еще один «Linq To SQL» и сказать: «Эй, мы выбрасываем Entity Framework, извините за это, вам следовало использовать NHibernate». Но мы решили, что, поскольку сейчас он находится на версии 2.0 с VS 2010, есть, по крайней мере, хороший шанс, что он будет существовать в течение нескольких лет.
Таким образом, несмотря на то, что проверенный послужной список NHibernate нам понравился намного больше, чем у Entity Framework, мы выбрали Entity Framework по причинам, о которых я упоминал выше.
Я думаю, вам просто нужно посмотреть на плюсы и минусы каждого инструмента, изучить все варианты и попытаться принять наилучшее решение, которое вы можете.
Интересно, какие функции лучше всего? фреймворка orm, который вы используете, и какие
Я бы сказал, что поддержка Linq - это потрясающая функция ORM для меня. Прямо сейчас для написания запросов Linq к базе данных требуется ORM. Linq дает мне проверку статического типа во время компиляции для базы данных в моих запросах, что теперь дает мне ошибки компилятора в некоторых сценариях, когда код и база данных не синхронизированы. Я обычно работаю с базами данных, которые сильно меняются (гибкими), и работаю с группами разработчиков, где обновления схемы базы данных могут поступать от любого члена команды.
По какой причине вы выбрали framework, который вы используете?
По этой теме есть множество других вопросов и ответов:
Мне интересно, какую лучшую функцию (функции) фреймворка orm вы используете и какие функции вы используете чаще всего?
Я написал свой собственный ORM. Особенности включают:
Машинно генерируемый код для каждой таблицы, основанный на абстрактных определениях таблиц
Библиотека/фреймворк, который действует на определения таблиц и данные во время выполнения, чтобы реализовать такие полезные функции, как:
По какой причине вы выбрали используемый вами фреймворк?
Я не хотел использовать существующий ORM, потому что боялся, что рано или поздно обнаружится, что он не реализует какую-то нужную мне функцию, и тогда мне будет трудно добавить эту функцию.
Я хотел использовать ORM, потому что не хотел писать и поддерживать код для каждой отдельной таблицы.
Я использую empire-db от Apache.
Основная причина в том, что я избавляюсь от XML или аннотаций для определения схем баз данных. Я очень не люблю переносить сложность с кодирования на конфигурирование, имея дело с триллионами xml конфигурационных файлов и - что еще хуже - распределенным конфигурированием с использованием аннотаций.
Я написал Object Data Blocks, чтобы предложить следующие выдающиеся возможности
Лучше всего это можно описать как ORM в стиле объектной персистенции.
Я написал ORM, потому что он работает с .NET Compact Framework на устройствах, а также с полной .NET Framework без перекомпиляции.
По какой причине вы выбрали framework, который вы используете?
Он не требует от класса наследоваться от указанного базового типа или реализовывать какой-либо интерфейс.
Он поддерживает области вложенных транзакций, которые не представлены в .NET Compact Framework.
Это позволяет мне создавать уровень доступа к данным с моделью предметной области, которую можно использовать как на устройстве, так и на рабочем столе или в веб-приложении без перекрестной компиляции или дублирования.