Здравствуйте, Sinclair, Вы писали:
S>Хотелось бы убедительный пример.
Я никаких преимуществ linq так и не нашел, зато недостатков вагон и маленькая тележка. Да, в простых случаях, если простенькую бизнес-логику впихнуть в классы контекста, то можно быстро сваять приложение даже не зная что такое SQL Server. Оно само там будет внутри как-то работать благодаря EF, подходит студентам и разработчикам не знающим SQL.
А как только сложность приложения перерастает определенный уровень, то мгновенно вылазят проблемы, Во-первых, логику в контекстные файлы конечно-же не сложишь, нужен будет маппинг между ними. Научится писать запросы на linq — это по-сути выучить SQL по-новой, т.к. запросы там пишутся совершенно по-другому синтаксически. В простых случаях "для студентов" это прокатывает т.к. они вместо написания нормального запроса лепят просто циклы на циклах, а во что это превращается на стороне сервера и понятия не имеют. В сложных запросах с джойнами, группировками и прочим начинают вылезать ограничения linq, скажем там нет оператора IN, приходится часто искать обходные пути, компилятор отказывается воспринимать определеннные конструкции, скажем при несовпадении типа данных при джойне таблиц комилятор заставит сделать приведение к нужному типу, после чего радостно превратит это в CAST в where запроса убив мне индекс. Написать запрос конечно можно будет, только хранимка с нормальным SQL займет куда меньше времени и часто будет куда эффективней
Единственный недостаток хранимок что они начинают плодится под разные запросы, при изменении структуры базы их все надо будет обновлять, что менее удобно т.к. в linq соответствующие ошибки будут подсвечены компилятором