ADO.NET Entity Framework и NHibernate - когда использовать один поверх другого - PullRequest
5 голосов
/ 09 апреля 2009

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

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

Какие еще вещи должны помочь вам ориентироваться в каждом приложении?

ОБНОВЛЕНИЕ (на основе комментариев): Этот вариант немного полезен Что отличает Nhibernate от других ORM? другие превращаются в странные касательные (например, SubSonic) и не сравнивают их напрямую. Я думаю, что я специально ищу людей, которые используют оба, и выбирают проект за проектом, какой из них они будут использовать.

Ответы [ 3 ]

6 голосов
/ 09 апреля 2009

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

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

4 голосов
/ 09 апреля 2009

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

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

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

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

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

2 голосов
/ 09 апреля 2009

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

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

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