Entity Framework 4.1 VS Nhibernate, для нубов в ORM - PullRequest
4 голосов
/ 11 января 2012

Я впервые оцениваю ORM.Пожалуйста, предложите, какой из них мне выбрать для моего следующего проекта.

Сначала я написал пару примеров кода с кодом EF 4.1.Прежде чем начать то же упражнение с Nhibernate, я хочу знать, если у кого-то уже есть опыт работы с обоими приложениями.

Мои критерии оценки

  1. Скорость доступа к базе данных
  2. Кривая обучения (потому что я новичок в ORM)
  3. Поддержка сообщества
  4. Наличие учебников / книг
  5. Все остальное, что я должен учитывать (потому что я новичок в ORM)

Я хотел бы, чтобы люди, которые имеют опыт работы с приложением ORM на уровне производства, ответили на мой вопрос.

Заранее спасибо !!!

Я знаю, что этот вопрос может быть немного опасно задавать;)

Ответы [ 3 ]

6 голосов
/ 11 января 2012

Используя EF 4.1 и Castle ActiveRecord (основанный на NHibernate), я оценил бы их следующим образом:

Скорость доступа к БД - NHibernate для всего, что сложно удаленно, в остальном примерно одинаково.Проблема с EF заключается в том, что он создает такой сложный SQL, что трудно понять, как его оптимизировать или даже можно ли это сделать.

Кривая обучения - лично я нашел, что EF легче начать, но другиеможет чувствовать себя по-разному, и оба, безусловно, имеют кривую обучения.

Поддержка сообщества - Зависит от того, что вы подразумеваете под «поддержкой».Вы найдете много информации в Интернете (и на этом сайте) для обоих.NHibernate является открытым исходным кодом, в то время как EF контролируется MS.

Учебники / книги - я считаю, что в настоящее время для EF доступно больше «официальных» ресурсов, но поиск по форумам, вероятно, даст вам то, что вы можете »найти в книгах.

Anthing else - Поймите, что целью ORM является упрощение уровня доступа к данным для разработчика.Тем не менее, оба этих ORM (и почти любой другой тяжеловесный ORM) ожидают, что вы будете использовать определенные шаблоны кодирования для реализации этого упрощения.Хотя применение шаблонов кодирования не является плохой вещью (некоторые утверждают, что это необходимо), к этому, безусловно, нужно подготовиться, прежде чем выбрать один.

3 голосов
/ 11 января 2012

Если вы новичок в ORM и нуждаетесь только в базовых функциях, вы можете обнаружить, что Entity Framework и Nhibernate излишне убиты и должны смотреть на легковесный, такой как Massive:

https://github.com/robconery/massive

Тем не менее, есть две основные проблемы, с которыми вы сталкиваетесь с EF против NH

  1. EF - это поддержка Microsoft, поэтому все их инструменты по умолчанию используют EF.Упрощение написания кода для начинающих с EF.
  2. NHibernate более зрелый и имеет более широкий набор функций (если он вам нужен), а также имеет хорошее сообщество разработчиков и много информации об этом в блоге.

Я бы выбрал Massive, если вы хотите простой / быстрый, но не поддерживаемый, EF, если вы хотите легкий и поддержку MS, но в некотором смысле ограниченный, или NHibernate, если у вас есть время, чтобы изучить правильный ORM.

Надеюсь, что этопомогает.

1 голос
/ 11 января 2012

Что ж, мой личный опыт. Nhibernate был правильным выбором, в сложной ситуации у меня были лучшие результаты, и учиться было намного легче.

Сначала я выучил его, а затем попробовал Entity Framework, и мне стало легче изучать nhibernate. Хотя в тот момент я ничего не знал об ORM.

Поддержка сообщества, Учебники и книгиЯ могу сказать, что они оба хороши и у них есть много материала для изучения.

Теперь я могу использовать их обоих, но Nhibernate все еще нравится намного больше.

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