ADO.NET Entity Framework: принятие решений между решениями ORM

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

  1. Масштабируемость
  2. Кривая обучения
  3. Легко использовать
  4. Представление И Т.П.
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
11
0
6 703
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ну, из трех, которые вы перечислили, 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]

1. Linq поддерживает наследование. 2. Существуют поставщики LINQ для Mysql, Oracle и PostgreSQL.

graffic 08.12.2008 17:52

Linq to SQl поддерживает таблицу для каждого типа?

RobS 08.12.2008 18:08

.... Entity Framework также является единственной, которая должным образом поддерживает трехуровневый дизайн с веб-сервисами между данными и интерфейсом.

Dave R 12.12.2008 17:28

Кроме того, Entity Framework v2 должна быть намного лучше в многоуровневых архитектурах и архитектурах SOA, или мне так кажется.

RobS 19.12.2008 05:34

Другие вопросы по теме