Доступ к базе данных SQL старой школы по сравнению с ORM (NHibernate, EF и др.). Кто выигрывает?

Мне удалось написать собственный код доступа SQL с комбинацией хранимых процедур и параметризованных запросов и небольшой библиотеки-оболочки, которую я написал для минимизации гранжа ADO.NET. В прошлом у меня все это работало очень хорошо, и я был довольно продуктивен.

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

Олдскульный код ADO.NET или ORM? Я уверен, что есть кривая - есть ли у этой кривой рентабельность инвестиций, которая оправдывает себя? Я беспокоюсь и хочу учиться, но у меня есть крайний срок.


person rp.    schedule 12.09.2008    source источник


Ответы (3)


Хороший вопрос, но очень спорная тема.

Это сообщение в блоге Франса Баумы за несколько лет обратная ссылка на плюсы динамического SQL (подразумевающего ORM) над хранимыми процедурами вызвала настоящую войну пламени.

person Ray    schedule 12.09.2008

Я считаю, что LINQ to SQL работает намного быстрее, когда я создаю прототип кода. Когда мне что-то нужно сейчас, это просто сдувает любой другой метод.

Но есть цена. По сравнению с сохраненными процессами, созданными вручную, LINQ работает медленно. Особенно, если вы не очень осторожны, поскольку кажущиеся незначительными изменения могут внезапно превратиться в запросы 1 + N.

Моя рекомендация. Сначала используйте LINQ to SQL, а затем переключитесь на обработку, если вы не получаете нужную производительность.

person Jonathan Allen    schedule 12.09.2008

На DevTeach в Монреале прошла большая дискуссия на эту тему. Если вы перейдете по этому URL-адресу: http://www.dotnetrocks.com/default.aspx?showNum=240 вы сможете услышать, как два эксперта в данной области (Тед Ньюард и Орен Эйни) обсуждают плюсы и минусы каждого подхода. Вероятно, это лучший ответ, который вы найдете по теме, на которую нет однозначного ответа.

person Kyle B.    schedule 12.09.2008
comment
Я бы хотел, чтобы DotNetRocks опросил человека, написавшего System.Data.DataSet, и узнал его / ее мнение об ORM. Мне также любопытно, что функциональные программисты, использующие F # или ocaml, думают о накладных расходах ORM. - person BuddyJoe; 20.11.2008