Я не понимаю, почему в каждой дискуссии на эту тему предполагается, что писать SQL сложно, а писать запросы linq - нет. Несмотря на то, что простой linq действительно прост, как только вы захотите написать запрос, который обращается ко многим таблицам со сложными внешними объединениями, он просто становится невероятно грязным. Мало того, но я понятия не имею, как базовый движок будет обрабатывать мой запрос, и если он не работает, его очень сложно отладить.
Мне в 100 раз легче быстро написать сложный кусок SQL (если я вырос с этим, но, конечно, я не единственный), чем делать то же самое в linq.
Если мне нужно настроить его в сохраненном процессе, я просто настрою его и выпущу новый сохраненный процесс. Мне не нужно делать полную сборку приложения, потому что код встроен в него.
Если он работает неэффективно, я могу работать над запросом, пока он не справится.
Тем не менее, каждая презентация на linq говорит, что вам больше не нужно изучать SQL. И все же SQL - такой хорошо понятный, зрелый язык. Черт, я бы предпочел, чтобы я мог поместить SQL непосредственно в мой код C # вместо того, чтобы изучать новый синтаксис.
Даже теория кросс-доступа к базе данных «если я напишу ее в linq, я могу использовать любую базу данных, которую захочу», меня не интересует, особенно если я пишу, скажем, SQL Azure, где я точно знаю, какая база данных это будет.
Итак, это моя напыщенная речь (которая уже давно накапливается!) На эту тему. Я бы хранил проки. Если вы хотите, чтобы тип был безопасным, загрузите результаты в четко определенные бизнес-объекты или, если хотите, linq to sql entity.