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





Ну, из трех, которые вы перечислили, 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]
Linq to SQl поддерживает таблицу для каждого типа?
.... Entity Framework также является единственной, которая должным образом поддерживает трехуровневый дизайн с веб-сервисами между данными и интерфейсом.
Кроме того, Entity Framework v2 должна быть намного лучше в многоуровневых архитектурах и архитектурах SOA, или мне так кажется.
1. Linq поддерживает наследование. 2. Существуют поставщики LINQ для Mysql, Oracle и PostgreSQL.