Мне нравится LINQ. Но у всего есть свои пределы. В одном из проектов нужно было получать данные из базы. Для этого был набор запросов длиной до 300-400 строк, из которых 100-150 в предложении SELECT, а остальные в предложении FROM определяют 70-80 слияний разных видов. Ну и чуть-чуть условий. И дело не в том, что в контексте нужно было прописать 100+ таблиц. Запрос то уже есть, а его приходится писать заново, но уже на LINQ. И доказывать, что они дают один и тот же результат. Но нашелся другой путь. Этот метод класса Database принимает в качестве параметров текст запроса и набор параметров к нему и позволяет задать тип записей результата. Таким образом задача сводится к формированию объекта данных для каждого запроса. Запросов было всего три десятка, так что удалось сэкономить на классах для объектов данных. Эта функция Transact-SQL возвращает метаданные о результате запроса. При этом запрос может вообще ничего не возвращать. В качестве параметра принимает текст запроса, строку с декла