А умеет ли такое LINQ или кто ещё из лёгких ORM-ов?
От: dimgel Россия https://github.com/dimgel
Дата: 04.11.14 13:45
Оценка:
Hi all. Виделось мне краем глаза, что в LINQ есть динамическое конструирование запросов в таком духе:

q = from u in user select u;
q = q.where(u => u.id == 1);  // за синтаксис не поручусь, но идея такая


Вопросы:

0 (offtop): Мне смутно помнится из когда-то виденного примера, что тип для u внутри where() не был указан. Оно что, само находит? А если в запросе несколько таблиц с id, тогда ругнётся?

1. А умеет ли LINQ (или кто ещё) динамически добавлять произвольные выражения не только в where, но и в любые другие части запроса? Например, так:

e = if (...) expr(u => u.id) else expr(u => u.boss_id)
q = from u in user select(e)


2. Подзапросы оно наверняка поддерживает, а динамически внедрять один запрос в другой, по аналогии с п.1?

3. П.1, но с усложнением. Допустим, нам надо вывести список юзеров по фильтру. В фильтре есть опция "показать юзеров, отказавшихся от наших услуг и оставивших отзыв" . А эти отказы и отзывы лежат в отдельной таблице. (Реальный юз-кейс с одной из прошлых работ.) Динамическое подключение такого выражения в условие потребует, кроме прочего, добавления в генерируемый SQL-запрос left join unsubscribed_user.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.