Re[95]: Тормознутость и кривость linq
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.04.16 17:50
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Ты имеешь в виду компилируемым? ) Но тогда он будет уже зависеть от особенностей языка и соответствующих библиотек в нём. Так это просто идея была универсальная... Ну да ладно, чтобы не придирались (а то бывают тут неадекваты, которые сразу начнут орать "ааа не можешь", хотя задачка для школьника) покажу пример на той же самой библиотечке C++:

_>
_>auto q=dynamic_select(db).columns(all_of(Product)).dynamic_from(Product).dynamic_where();
_>if(categoryName||categoryColor||categoryGroupName) q.from.add(dynamic_join(Category).on(Category.id==Product.category_id));
_>if(categoryName) q.where.add(Category.name.like(*categoryName+"%"));
_>if(categoryColor) q.where.add(Category.color==*categoryColor);
_>if(categoryGroupName) q.where.add(Category.group_name==*categoryGroupName);
_>


Не прошло и двух месяцев, как ты выдал обещанное, после примерно десятой просьбы. Делаешь успехи.

0 Как быть, если в разных базах запросы имеют разную структуру ? Кто это будет обеспечивать ?

1 Каким образом компилятор гарантирует, что q.where.add не свалится ? Ну, например, в одном месте ты пропустил dynamic_where() а в другом пишешь q.where.add ?

2 Каким образом компилятор гарантирует, что в респонзе будут заполнены все поля, которые нужны для маппинга ?

3 Каким образом компилятор гарантирует, что джойн с Category вообще валидный ?

Фактически, у тебя исключительно проверка синтаксиса и ничего больше. то есть, ровно те же проблемы склейки строк, что были в 90х и от которых всегда всеми силами пытались уйти.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.