ADO.NET Entity Framework: принятие решений между решениями ORM - PullRequest
11 голосов
/ 08 декабря 2008

Я ищу руководство для моего нового приложения при выборе ORM. Я хочу оценить EF через NHibernate и LINQ to SQL. Мне нужен экспертный голос из этого замечательного сообщества. Вы можете оценить по следующему пункту.

  1. Масштабируемость
  2. Кривая обучения
  3. Простота в использовании
  4. Производительность Т.Д.

1 Ответ

12 голосов
/ 08 декабря 2008

Ну, из трех перечисленных тобой NHibernate был самым длинным. Если вы хотите работать с чем-то, что имеет проверенный послужной список, это, вероятно, безопасное место для начала.

Это довольно даже по четырем показателям (масштаб / кривая обучения / простота использования и производительность), хотя вы можете обнаружить, что доступно больше информации, потому что она дольше, чем две другие.

LINQ to SQL выпущен дольше, чем Entity Framework, но работает только с разновидностями SQL Server. Он очень хорошо работает для ORM, но не обладает такими возможностями, как Entity Framework (который, помимо прочего, предоставляет eSql).

LINQ to SQL довольно легко понять (в зависимости от ваших знаний о LINQ), и в последнее время качество сгенерированных запросов улучшилось (начиная с более ранних бета-версий). Я не уверен, насколько хорошо он масштабируется или работает, но вы должны подумать, что он наравне с рукописным T-SQL среднего разработчика (хорошо, теперь это дикое предположение!). Это довольно просто и создает очень хорошую модель для вас в Visual Studio.

Существуют другие (2) альтернативы для поддержки баз данных, отличных от SQL Server

Entity Framework является новейшей из трех, и в результате все еще есть некоторые проблемы, которые необходимо исправить (надеюсь, в следующей версии). Он будет работать с рядом провайдеров (не ограничиваясь SQL Server) и обладает дополнительными преимуществами, такими как eSQL и (1) наследование таблиц по типам . Поначалу учиться может быть немного сложно, но как только вы сделали с ним одно или два решения, оно становится предсказуемым и более простым для реализации.

Из-за того, что он самый последний, потребуется немного больше с точки зрения кривой обучения (а также есть чему поучиться), а производительность ... менее чем желательна (в настоящее время), но она предлагает некоторые интересные преимущества (особенно поддержка нескольких провайдеров).

Полагаю, мой вопрос в ответе - вы просто оцениваете или вам нужно создать работоспособное (готовое к производству) решение ORM?

Entity Framework, вероятно, не совсем готов к серьезной производственной работе (за исключением небольших решений), что оставляет вас с LINQ to SQL или NHibernate. Если вы собираетесь работать только с базами данных SQL Server, LINQ to SQL - интересный вариант. В противном случае NHibernate, вероятно, является лучшим выбором для серьезной работы.

(1) [http://msdn.microsoft.com/en-us/data/cc765425.aspx] (2) [http://www.devart.com/dotconnect/linq.html]

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