Я знаю, что это несколько раз спрашивали, и я прочитал все сообщения также, но они все очень стары. И рассмотрение там было продвижениями в версиях и выпусками, я надеюсь, что могли бы быть новые представления.
Мы создаем новое приложение на ASP.NET MVC и должны завершить на инструменте ORM. Мы никогда не использовали ORM прежде и в значительной степени свелись к два - nHibernate и Платформа Объекта.
Мне действительно нужен некоторый совет от кого-то, кто использовал и эти инструменты и может рекомендовать на основе опыта. Существует три точки, на которых я фокусируюсь завершить -
Ваш совет будет высоко цениться.
С уважением,
Я бы использовал Nhibernate . Я бы выбрал Sharp Architecture как отличный фреймворк, который объединяет NHibernate, ASP.NET MVC и множество других инструментов с открытым исходным кодом в единое целое, которое даст вам прочную архитектурную основу.
Нибернат более зрелый, чем EF4. Это хорошо поддерживается сообществом. Если вы готовы время от времени пачкать руки, вам это понравится.Его поддержка LINQ в настоящее время немного слабая, но она быстро улучшается. Кривая обучения неплохая, но такие вещи, как управление сеансами, поначалу могут немного сбивать с толку. Одна из причин, по которой мне нравится Sharp Architecture, заключается в том, что в них есть все необходимое для NHibernate и множество инструкций по его правильному использованию в проекте ASP.NET MVC.
EF4 имеет печать одобрения MS. Сейчас это неплохо, но все еще отстает от NHibernate. Это совершенно хороший выбор, и вы найдете множество документов от MS, службы поддержки MS и, в конечном итоге, больше разработчиков, которые знакомы с тонкостями. Я также должен упомянуть, что разработчики Sharp Architecture добавляют поддержку EF4 в свою общую структуру. Они по-прежнему будут поддерживать NHibernate, но при желании вы сможете использовать EF4.
Я думаю, что изучение NHibernate займет больше времени.
EF предоставляет графический дизайнер , к сожалению, NHibernate не имеет универсального дизайнера. Кстати, это не проблема. Если вы разрабатываете объектно-ориентированный метод (DDD), вы сначала разрабатываете свои сущности, и вам не важна структура базы данных (как вы это делали раньше), NHibernate сделает это за вас.
EF 4 стал ближе к NHibernate . Я бы не стал работать с EF 3.5, в нем много функций.
Если вы думаете, что NHibernate на первый взгляд слишком сложен, вы можете начать с фреймворков, построенных на основе NHibernate . ActiveRecords и Sharp Architect - хорошие примеры.
AFAIR EF 3.5 поддерживал только SQL Server 2000 . Он не мог обрабатывать новые типы данных из SQL Server 2005. У меня нет информации о EF 4, но я полагаю, что он поддерживает эти улучшения.
Если вы используете NHibernate в приложениях Real Word, вы должны построить инфраструктуру . Например. Я реализовал шаблоны Единица работы и Репозиторий , чтобы иметь возможность писать тесты и создавать слои в моем приложении. Вы должны ожидать того же, используя EF. Отсоединение и присоединение объектов в EF 3.5 было непросто, мне пришлось написать сложные методы расширения, чтобы пометить поля как грязные и так далее. Надеюсь, они решили это в EF 4. С NHibernate такой проблемы нет.
Вам не нужно писать HQL-запросы в NHibernate, вы можете использовать LINQ-провайдер . Я считаю это очень важным. :)
В целом NHibernate - зрелый продукт с хорошим сообществом и коммерческой поддержкой . EF - молодая компания, но ее активно поддерживает Microsoft. О, и EF - это единственная вещь Microsoft, хотя вы также можете перенести свои знания NHibernate на Java. Это важно для вас.