2009-04-08 6 views
5

Я работаю в магазине Microsoft .NET, где нормально использовать NHibernate или ADO.NET EF. Какое руководство нам следует использовать, когда вы должны выбирать один над другим?ADO.NET Entity Framework и NHibernate - когда использовать один над другим

Например, при написании приложения Silverlight EF-to-> ADO.NET Data Services -to-> Silverlight предложит повышение производительности и предоставит вам API-интерфейс REST без каких-либо дополнительных усилий.

Что еще должно помочь вам в использовании приложения на основе приложения?

UPDATE (основано на комментарий): Это один немного полезной What differentiates Nhibernate from other ORM’s? другие уходят в странные касательных (как SubSonic) и непосредственно не сравнить два. Наверное, я специально ищу людей, которые используют оба, и решают проект по проекту, который они будут использовать.

+0

Это дубликат много раз. Посмотрите на связанные вопросы в правой части этой страницы. –

ответ

6

В двух словах, EF не поддерживает поддержку сохранения устойчивости. Когда я впервые попытался создать решение с EF в прошлом году, мне было немного досадно, что у вас не может быть POCOs в вашем приложении. Мне нужна была более высокая степень развязки с моей моделью, поэтому я перешел на NHibernate. С тех пор кто-то написал адаптер EF POCO. http://code.msdn.microsoft.com/EFPocoAdapter - однако это действительно просто кодогенератор, который генерирует слой адаптера для отображения ваших объектов.

По какой-то причине мое приложение запускалось немного быстрее в NHibernate. Возьмите это с солью, потому что я был новичок в настройке любого решения.

+0

Очевидно, что для EF v2.0, которое должно поставляться с .NET 4, должно быть проигнорировано незнание PErsistence.0/VS 2010, когда-то в начале 2010 года –

+0

Спасибо за информацию. Приятно слышать, что незнание невежества входит в v2. Посмотрите на адаптер, не видел этого раньше. Но в ближайшие 18 месяцев я думаю, что буду придерживаться в основном NH. Я уже узнал, как писать эти файлы darn config;) – BuddyJoe

+0

... и теперь вам придется снова отображать картографию, так как все, кто «крут», теперь делают это свободно :) http://fluentnhibernate.org/ – HenningK

2

Я бы, вероятно, вообще избегал рамки сущности. Есть vote of no confidence, что было дано задание, не говоря уже о том, что оно не так зрело, как NHibernate.

Сказав это, я буду продолжать оценивать инфраструктуру сущности, поскольку я уверен, что со временем она будет улучшена.

+0

+1 видел «голосование без conf», и сообщения в блоге о недостающей или отсутствующей функциональности. Но ваше право на это улучшается. Потребители обычно получают право на третью попытку. – BuddyJoe

4

Microsoft недавно приступила к разработке нового решения под названием .NET Ria Services (на данный момент), которое будет «независимым от ORM» для получения данных в Silverlight и из него из уровня бизнес-логики, живущего на сервере.

Они публично упомянуты (на слайдах в MIX, даже), что здесь будет поддерживаться NH WILL.

Если вы ищете решение с наибольшей поддержкой сообщества, NHibernate определенно является ответом. Я соглашусь, что у него крутая кривая обучения, но по моему опыту это, безусловно, стоит того. Просто выполните сравнительный поиск для «рамки сущности» и «nhibernate», и вы поймете, что я имею в виду. Большая часть материала EF будет «нажимать», в то время как материал NHibernate будет фактически иметь технические характеристики. И вопросы. Ответь.

Но, как уже отмечали другие плакаты, я уверен, что структура Entity Framework со временем улучшится. Пока что, я считаю, что они пытаются решить слишком много проблем с помощью одного набора инструментов. NHibernate делает только одно, но делает это исключительно хорошо.

Здесь также возникает проблема дизайна приложения. Кажется, что EF (в своем текущем воплощении) построен для доставки базы данных в приложение C#. NHibernate идет в другую сторону и упрощает задачу сохранения объектной модели.

+0

+1 хорошие мысли. Вам не нужно продавать меня на NHibernate. Я копаю в нем около 3 месяцев. Я нахожу его гораздо более настраиваемым и модульным, чем EF. NH способ сделать это говорит со мной. LINQ с EF по-прежнему немного чужды. – BuddyJoe

+1

Будет читать в службах RIA. – BuddyJoe