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

  Рет қаралды 3,381

IBS Training Center

IBS Training Center

Күн бұрын

Видео доклада Ивана Кошелева, представленного на онлайн-конференции 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.
- Юнит-тестирование сложных запросов. Мок-контексты данных и мок-функции.

Пікірлер: 8
@ИгорьХохлов-ь4ю
@ИгорьХохлов-ь4ю 5 жыл бұрын
Чувак, отвечаю, я в своем проекте все так е перепишу. Спс.
@hannimedable
@hannimedable 3 жыл бұрын
Как долго выполняются такие запросы? Мне кажется, это работает, до тех пор пока есть время и ресурсы на генерацию отчетов по таким запросам. В случае больших нагрузок, такой подход увы не сработает...
@sergbo3114
@sergbo3114 Жыл бұрын
А что такого в запросах генерируемых ЕФ криминального? Большинство проблем как было сказано связано с неправильным индексированием. Ну если конечно не писать запросы которые разворачиваются в 1000 запросов SQL. А вообще как сказал герой фильма "Мандалорец" : "Не знаешь не говори!" И я не к тому что сомневаюсь в ваших знаниях, а к тому что у вас нет конкретного примера медленных запросов сгенерированных ЕФ. Есть только ключевое слово "кажется". Ну говорил же докладчик что бывают очень редко ситуации что еф не справляется. Сам сталкивался с медленными запросами. Доходило до оптимизации плана выполнения запроса. Но когда бд и систему в целом планировал криворуких хрен, как в моем случае, то никакая оптимизация не помогает. Например у меня разработчик приложения посчитал нифиговой идею фильтровать(выбирать) записи в таблице где их 30 лямов текстом. Причем текст внутри строки. Например "TK512345123.1206" вот 512345123 это номер по которому шла выборка. В итоге не преобразовать поле, ни толком проиндексировать. Не всегда дело в запросах.
@xDedMopdex
@xDedMopdex 5 жыл бұрын
Как-то бывший тех Лид присек мои порывы писать подобные иерархии IQueriable обосновывая это тем, что при изменении базовых выборок , можно поломать выборки более высоких уровней и даже этого не заметить, а потом долго отлавливать где именно косяк. Что думаете по этому поводу?
@xDedMopdex
@xDedMopdex 5 жыл бұрын
Если конечно не брать во внимание вариант интеграционных тестов. Мало кто из клиентов на них соглашается
@sergbo3114
@sergbo3114 Жыл бұрын
"Частично запросы генерируются JavaScript`ом." Звучит опасно. Как бы нельзя было туда чет заинжектить с запросом на стороне клиента(браузера) и на бд какойнить делит загнать)
@timur2887
@timur2887 10 ай бұрын
Все попытки заменить sql через linq и expression trees так и не достигли успеха, т.к. как ни крути, но описать сложный запрос понятнее и короче, чем в sql c# не может, но эти попытки говорят о том, что новые поколения программистов не сильны в языках запросов и предпочитают все кодить в языке высокого уровня, упуская из виду, что sql разрабатывался именно для работы с множествами и, хотя он очень стар и местами неуклюж, с множествами в нем до сих пор работать гораздо удобнее.
@timur2887
@timur2887 10 ай бұрын
Какой ужас эти Expression Trees, совершенно нечитаемы.. на порядок проще понять/написать sql запрос, еще и короче выйдет.
Денис Цветцих - LINQ Expressions: искусство запрашивать данные
57:53
DotNext — конференция для .NET‑разработчиков
Рет қаралды 4,2 М.
人是不能做到吗?#火影忍者 #家人  #佐助
00:20
火影忍者一家
Рет қаралды 20 МЛН
So Cute 🥰 who is better?
00:15
dednahype
Рет қаралды 19 МЛН
coco在求救? #小丑 #天使 #shorts
00:29
好人小丑
Рет қаралды 120 МЛН
Арыстанның айқасы, Тәуіржанның шайқасы!
25:51
QosLike / ҚосЛайк / Косылайық
Рет қаралды 700 М.
Методы AsEnumerable и AsQueryable бесполезны?
35:02
Dev Jungles - Andrii Podkolzin
Рет қаралды 7 М.
Максим Аршинов - Деревья выражений в enterprise-разработке
46:54
DotNext — конференция для .NET‑разработчиков
Рет қаралды 12 М.
Вебинар «PostgreSQL один за всех?»
1:23:38
IBS Training Center
Рет қаралды 224
When to use IEnumerable vs IQueryable?
4:49
DotNetMastery
Рет қаралды 30 М.
IEnumerable vs IQueryable
11:39
Coding Tutorials
Рет қаралды 11 М.
人是不能做到吗?#火影忍者 #家人  #佐助
00:20
火影忍者一家
Рет қаралды 20 МЛН