2010-03-02 2 views
2

Вопрос: До сих пор я не знал, что LINQ является инструментом ORM. Я всегда рассматривал это как новый тип языка запросов SQL. Поэтому я совсем недавно начал использовать nHibernate.

Так что мой вопрос:
Что бы преимущества и недостатки LINQ по сравнению с NHibernate?

Насколько я понял, различия в том, что LINQ требует .NET> 2.0 (если вы не взломали его, что является небезопасным и незаконным), а nHibernate работает с> = 2.0.
И что для LINQ вам необходимо иметь DLL поставщика поставщика/стороннего поставщика LINQ, если вы не используете MS-SQL.
В частности, я не знаю, какой из них быстрее/проще, и есть ли поставщики LINQ для всех баз данных, поддерживаемых nHibernate, и насколько LINQ работает с моно.LINQ vs. nHibernate

+0

Просто для уточнения, LINQ был частью системы .Net 3. –

+7

Хорошо, вы заняты запутыванием вещей «Linq», которые являются языком запросов, и «Linq to SQL», который является ORM. Вы можете использовать Linq для запроса NHibernate, если вы выберете ... – Murph

+0

Я думаю, что я собираюсь остаться с nHibernate. –

ответ

6

Linq не является инструментом ORM. Linq2Sql и структура Entity являются инструментами Microsoft ORM с использованием Linq. Я нашел this article, сравнивая NHibernate с Entity Framework 4,0, довольно просветительский.

Подводя итог: NHibernate, давно установлен и протестирован, а Fluent - это радость в использовании. К сожалению, NHibernate находится в отделе документации, но это ОС, поэтому вы можете вникнуть в код. EF 1.0 был ужасен, но 4.0 намного лучше. Это продукт MS, поэтому он сильно евангелизирован, поддерживается, и в Интернете есть много примеров. 4.0 все еще остается бета-версией.

+1

Никогда не читайте nHibernate doc в любом случае. –

3

LINQ не является ORM. LINQ - это просто технология запросов/библиотека со специальным синтаксисом в C#, а LINQ и NHibernate - дополнительные технологии. Существует даже L INQ2NHiernate.

LINQ2SQL - это ORM. Что касается скорости, я бы не стал слишком беспокоиться об этом, если вы не делаете биржевое программное обеспечение или что-то в этом роде, где миллисекунды абсолютно важны. Я считаю, что даже StackOverflow работает на LINQ2SQL или в какой-то момент, но я могу ошибаться.

+0

ОК, поэтому с LINQ я имел в виду LINQ2SQL ;-)) Я читал где-то еще, что они переключаются с LINQ на nHibernate по соображениям производительности , Поэтому я не уверен, что это не важно. –

+0

Linq также отлично работает с vb.net! – ScottE

1

Есть 2 провайдера linq для NHibernate. Они поддерживают все базы данных NHibernate поддерживает

1

Помните, что LinqToSql действительно LinqToMsSqlServer - вы заперты, если вы берете этот маршрут ...