Здравствуйте, vdimas, Вы писали:
V>Я хотел услышать от коллеги, почему в батчах не могут быть "качественные запросы"?
Я тоже хочу услышать объяснение, каким же чудом появится этот качественный запрос в твоем случае. От тебя никакой конкретики нет, только общие слова "сервер сам поймет", "не твоё дело", "девелопер сам замерит" и тд и тд.
Почему в батчах не будет нормальных запросов — потому, что ты собираешься работать с произвольным кодом, который вообще ничем не ограничен.
В текущей реализации транслируется только небольшое подмножество языка и провайдер работает с высокоуровневыми вещами навроде Select, Where и тд. Благодаря этим ограничениям легко построить модель, которая будет генерить более-менее оптимальный запрос как раз под нужды SQL оптимизатора.
Ты же хочешь позволить все стейтменты, какие угодно, в т.ч. присваивания. То есть, linq провайдер должен теперь стать C#->sql компилятором. Скажем, аналог Select можно написать бесконечным количеством вариаций, все зависит от фантазии разработчика.
На самом деле легко компилировать в императивный код. А вот произвольный императивный скомпилировать в функциональный декларативный — это компилятору не под силу, просто потому, что например без подсказки нельзя вывести тип или нельзя выявить паттерн из за отсутствия ссылочной прозрачности.
Это значит, что шансов, что в базу уйдет нормальный код, совсем нет. В базу в твоей архитектуре будет уходить рукопашная работа с курсорами. То есть, та самая проекция сознания девелопера.
Собтсвенно, ты никак не можешь объяснить, откуда же возьмутся нормальные запросы. Ощущение, что ты уже написал свой собтсвенный идеальный C# компилятор, базу данных и провайдер, которые никому не показываешь