Что выгодно для запуска; Linq для SQL или Nhibernate? - PullRequest
0 голосов
/ 15 ноября 2009

Я хочу изучить ORM, и мне интересно, что полезно для запуска; Linq для SQL или Nhibernate. с учетом времени, адаптации ... и т. д.

Ответы [ 7 ]

7 голосов
/ 15 ноября 2009

Один важный вопрос, который следует задать себе, - можете ли вы принять зависимость от SQL Server. Например, изменится ли серверная часть базы данных на Oracle? LINQ to SQL тесно связан с SQL Server, а NHibernate нет. Я не говорю, что это обязательно плохое ограничение, но это важно учитывать.

NHibernate действительно прошел долгий путь за последние несколько лет. Мне действительно нравится Fluent NHibernate, например, но это не значит, что LINQ to SQL ограничивает. Мне нравится интеграция с Visual Studio, и она зарекомендовала себя более чем способной справиться с постоянной нагрузкой (переполнение стека использует LINQ to SQL, например).

Вопреки распространенному мнению, LINQ to SQL не умерла .

Редактировать: Еще один важный вопрос, который следует задать себе, - хотите ли вы изменить модель домена. LINQ to SQL отображает объекты непосредственно в таблицы. NHibernate, с другой стороны, допускает слой косвенности. Кстати, это также относится и к Entity Framework.

3 голосов
/ 15 ноября 2009

Я бы пошел с NHibernate, потому что есть хорошее сообщество открытого исходного кода, которое поддерживает его, отвечает на вопросы по нему и так далее. Когда ваш продукт станет больше и сложнее, вы по достоинству оцените мощь и гибкость NH. Наконец, Linq-to-sql не входит в долгосрочные планы MS, поскольку они хотят, чтобы вы использовали Entity Framework, так что вы можете оказаться там с тупиковой технологией.

2 голосов
/ 15 ноября 2009

Я бы проголосовал за Linq-to-SQL - почему?

  • имеет визуальный конструктор, который позволяет вам легче и быстрее получать результаты и что-то видеть
  • NHibernate очень мощный - но это также усложняет обучение; Вы должны действительно любить суп из угловых скобок (то есть много файлов сопоставления XML), чтобы быстро освоиться с NHibernate
2 голосов
/ 15 ноября 2009

Если у вас нет опыта работы с ORM, Linq to SQL немного легче выучить, чем NHibernate. Он также лучше интегрирован с Visual Studio.

1 голос
/ 15 ноября 2009

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

NHibernate "более мощный" ... Я думаю, это означает, что вы можете использовать его против любой базы данных, и это все. Нам нужно многому научиться, и если вы пойдете по этому пути, убедитесь, что вы в полной мере используете Fluent NHibernate, чтобы избежать всего мусора карт. Это намного чище, если иметь в виду кучу сопоставлений XML.

Я нахожу NHibernate разочаровывающим, потому что мне нравится запрашивать базу данных с помощью LINQ и проецировать (отображать) на модель. Я знаю, что есть LINQ для NHibernate, но я не могу сказать, что знаю любого, кто его использует.

Как правило, я бы сказал, использовать NHibernate, если вы счастливы получить все по идентификатору и пройти оттуда объектную модель. Как только вы захотите выполнить более сложные запросы, вам лучше быть готовыми к разочарованию.

0 голосов
/ 15 ноября 2009

В дополнение к ответу Дарина, рассмотрите этот пост, который я прочитал ранее.

Linq to SQL проще и быстрее внедрить и быстро интегрировать, но Nhibernate может дать вам больше гибкости, если вам нужно больше контроля. Недавно мне пришлось решить, использовать ли Linq to SQL в моем новом проекте приложения - мне просто не понравилось отсутствие гибкости.

NHibernate против LINQ to SQL http://www.acceptedeclectic.com/2007/12/linq-to-sql-vs-nhibernate-part-1-what.html

Дайте мне знать, если это поможет.

0 голосов
/ 15 ноября 2009

Linq to SQL должен быть заменен Entity Framework; Я думаю, что NHibernate будет хорошим выбором, так как есть много ссылок, и, кажется, он также широко используется.

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