Здравствуйте, Ikemefula, Вы писали:
_>>А ты думаешь твой ORM в .net по другому устроен? ))) Всё тоже самое. )
I>Щаз, компилирует каждый запрос под 100500 всех возможных баз данных и диалектов SQL, ага.
Причём тут каждый запрос? ) Речь о драйверах к конкретным БД. Что в .net, что в sqlpp11 под каждую БД есть свой драйвер. И соответственно если мы хотим, чтобы наше приложение умело работать со всеми БД, нам требуется скомпилировать их все и вставит в наше приложение.
_>>Я в курсе, что t4 — это препроцессор в C#. И кстати говоря, меня бы вполне устроило решение на нём, если бы оно могло чётко проверять sql синтаксис и генерировать оптимальные sql строки. Только вот я что-то сомневаюсь, что такое просто написать. И думаю, что готовых реализаций просто нет.
I>Итого — ты сомневаешься, что парсинг и генерация sql это решаемые задачи. Вопрос — при чем здесь C# и чем здесь С++ принципиально лучше ? Сам подумай — в рантайме можно, а в дизайн-тайм нельзя
К чему эти теоретически рассуждения? ) Покажи хоть какой-нибудь пример решения. Я то тебе показываю работающие куски кода.
I>>>А кто тебе типы будет подсказывать ?
_>>Нуу это вообще смешной вопрос. ))) Если уж printf типизированный давно существует в современном C++, то тут уже понятно всё. )
I>Нет, не понятно. Ты понамекал и сказал, что все это невозможно в C#
Невозможно в C# на этапе компиляции (если не считать варианта с препроцессором, но про такое я вообще не слышал). В рантайме естественно без проблем, но это уже куча оверхеда.
_>>ОК, будем считать, что ты плохо понял мою фразу. ) Очевидно, что время работы рефлексии никто не сравнивает со временем склейки голых строк. Её сравнивают с нулём, т.е. всё её время — это чистый оверхед.
I>И это принципиально неверно. Сравнивать нужно со временем типичных запросов, а они никогда нулю равны не бывают.
Всё правильно. Берём оверхед от рефлексии и всего остального и сравниваем со временем выполнения запроса. Если там будут не десятки процентов, то естественно можно наплевать на это всё. Кстати, а ты представляешь сколько на современной БД исполняется запрос вида "select count(*) from users"? ) Даже без кэширования...