При выборе ORM лучше ли LINQ to SQL или LINQ to Entities, чем NHibernate?

Я считаю, что могу сделать больше с NHibernate и даже Castle, чем с Linq to Entities или linq to SQL.

Я сумасшедший?

Стоит ли изучать 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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
0
5 248
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

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

Нет, ты не сумасшедший. nHibernate - это полноценный OR Mapper, Linq to SQL и Linq to Entities не реализуют всего, что вы ожидаете от OR Mapper, и ориентированы на несколько иную группу разработчиков.

Но пусть это не сбивает вас с пути. Linq по-прежнему неплохая идея .. Попробуйте Linq в nHibernate :-)

Большим недостатком NHibernate, Castle и т. д. Является то, что они не совсем легкие (особенно NHibernate).

Linq to SQL хорош для облегченного ORM с ограниченным использованием.

Точно. Они заметно медленнее, чем многие тяжелые инструменты ORM.

Alex Yakunin 09.11.2009 15:41

nHibernate невероятно быстр, прежде всего потому, что при правильном использовании он генерирует отличный SQL. К сожалению, это «правильное использование» редко бывает очевидным с nHibernate.

Egor Pavlikhin 25.03.2010 08:57

Следует иметь в виду, что NHibernate может быть абсолютной свиньей для настройки - тем более, что он основан в основном на файлах конфигурации XML из-за его корней, как у исходного Hibernate.

Свободно владеет NHibernate делает это менее болезненным.

Linq, безусловно, вписывается в общий «способ» работы .NET.

Я использовал как NHibernate, так и LINQ to SQL. С моей точки зрения, это зависит от проекта, если мне что-то нужно быстро, я бы выбрал L2S, так просто создать отображение dbml и начать его использовать. Если я разрабатываю корпоративное решение более высокого уровня, я бы выбрал проверенную и надежную ORM - NHibernate, я считаю, что функции ведения журналов и транзакций просты в использовании.

У LINQ to SQL относительно короткая кривая обучения, у NHibernate гораздо более крутая кривая обучения.

LINQ to SQL поддерживает только SQL Server, поэтому, если у вас есть база данных Oracle, решение уже принято - NHibernate.

Я бы рекомендовал посмотреть на http://www.summerofnhibernate.com/ отличные скринкасты по изучению NHibernate.

Я не пробовал Entity Framework, но определенно рекомендую NHibernate вместо Linq to SQL; Самая большая причина, которую я могу назвать, - это просто контроль. Linq to SQL любит иметь гораздо больший контроль над всем, загружая объект и поддерживая все виды отслеживающей информации об объекте. Если вы сериализуете / десериализуете, информация отслеживания может быть потеряна, и могут произойти странные вещи при ее повторном сохранении. NHibernate работает больше как репозиторий - вы передаете ему любой объект, который хотите (конечно, вы настроили его для понимания), и он помещает его в базу данных, независимо от того, что вы с ним сделали.

Blockquote Linq certainly though fits in with the general 'way' in which .NET works

Ой, меня пугает такое настроение. RAD-компоненты, встроенные в .net, НЕ являются принципом работы dot net, это просто набор инструментов для создания прототипов. .NET позволяет нам создавать полные DDD-приложения с высоким уровнем сплоченности, разделения проблем и позволяет нам писать несвязанный код, несмотря на все попытки ms объединить вещи. Я категорически не согласен с тем, что .net любит быть связанными, инструменты certian любят быть связанными, я включу linq to sql в эту драку. linq to sql разрушает идею отдельной доменной модели. Я съеживаюсь при мысли об использовании схемы моей базы данных в качестве базовых объектов модели. Правильные инструменты ORM должны позволить нам сначала смоделировать наш домен, а затем связать нашу реляционную базу данных с этими моделями. А не наоборот.

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