Комплексные запросы при помощи IQueryable и Expression Trees (Dev Labs 2017)

preview_player
Показать описание
Видео доклада Ивана Кошелева, представленного на онлайн-конференции Dev Labs 2017 (04/03/2017).

Рассматриваются темы:
– Ключевые отличия IQueryable и Expression Trees от IEnumerable и делегатов. Обзор возможностей Expression Trees.
– Композиция IQueryable и Expression Trees для создания сложных запросов из более простых переиспользуемых запросов.
– Безопасная Generic-фильтрация и сортировка с помощью Expression Trees ( DTO - Expression Tree - SQL ).
– Вынесение переиспользуемой логики запросов в Expression Trees. LinqKit.
– Юнит-тестирование сложных запросов. Мок-контексты данных и мок-функции.
Рекомендации по теме
Комментарии
Автор

Как долго выполняются такие запросы? Мне кажется, это работает, до тех пор пока есть время и ресурсы на генерацию отчетов по таким запросам. В случае больших нагрузок, такой подход увы не сработает...

hannimedable
Автор

Как-то бывший тех Лид присек мои порывы писать подобные иерархии IQueriable обосновывая это тем, что при изменении базовых выборок, можно поломать выборки более высоких уровней и даже этого не заметить, а потом долго отлавливать где именно косяк. Что думаете по этому поводу?

xDedMopdex
Автор

Чувак, отвечаю, я в своем проекте все так е перепишу. Спс.

ИгорьХохлов-ью
Автор

"Частично запросы генерируются JavaScript`ом." Звучит опасно. Как бы нельзя было туда чет заинжектить с запросом на стороне клиента(браузера) и на бд какойнить делит загнать)

sergbo
Автор

Все попытки заменить sql через linq и expression trees так и не достигли успеха, т.к. как ни крути, но описать сложный запрос понятнее и короче, чем в sql c# не может, но эти попытки говорят о том, что новые поколения программистов не сильны в языках запросов и предпочитают все кодить в языке высокого уровня, упуская из виду, что sql разрабатывался именно для работы с множествами и, хотя он очень стар и местами неуклюж, с множествами в нем до сих пор работать гораздо удобнее.

timur
Автор

Какой ужас эти Expression Trees, совершенно нечитаемы.. на порядок проще понять/написать sql запрос, еще и короче выйдет.

timur