ไม่สามารถเล่นวิดีโอนี้
ขออภัยในความไม่สะดวก
Алексей Фадеев - Не EF Core единым: альтернативная ORM LINQ to DB и ее возможности
ฝัง
- เผยแพร่เมื่อ 4 ก.ค. 2024
- Ближайшая конференция - DotNext 2024, 10 - 11 сентября, Москва + online
Подробности и билеты: jrg.su/x2GKnA
- -
Скачать презентацию с сайта DotNext - jrg.su/xzaMhg
Бездумное использование ORM-библиотек приводит к большому росту нагрузки на БД, администраторы баз данных не дадут соврать. Но ORM-библиотеки совершенствуются, разработчики учатся на своих и чужих ошибках, и многие научились писать код для ORM, генерирующий вполне оптимальные запросы для типовых операций. Но есть еще одна проблема ORM - ограниченность инструментов. Популярная СУБД Postgres имеет массу операторов и конструкций, выходящих за рамки стандарта SQL (да и в других СУБД такое встречается).
ORM-библиотека LINQ to DB имеет важную особенность: она позволяет очень просто (буквально в пару строк) писать расширения, реализующие любой SQL-оператор или конструкцию.
В этом докладе Алексей показал, как строить нетипичные для ORM запросы, например, с выражениями CTE (в том числе рекурсивными), табличными функциями и LATERAL JOIN. А также привел примеры использования специфичной для PostgreSQL функциональности: работы с массивами и jsonb, агрегатами array_agg и jsonb_object_agg, использование встроенного полнотекстового поиска, поиск по геоданным «KNN». Помимо демонстрации возможностей ORM LINQ to DB доклад может быть интересен, как раскрывающий специфическую функциональность самой СУБД Postgres, о котором многие разработчики даже не подозревали.
Спасибо за доклад! LINQ to DB действительно достойный продукт. Однако основными проблемами доступа к базам данных на основе LINQ, на взгляд являются: 1) Неоднозначность между конструкциями языка C# и SQL, что требует глубокого понимания внутреннего устройства ORM для создания предсказуемых запросов. 2) Трудоемкость написания динамических запросов. Помаявшись в свое время с разными ORM и хранимыми процедурами, я как водится написал свое решение, которое воспроизводит AST языка SQL: th-cam.com/video/Zd-fCb8NimA/w-d-xo.html. Благодаря перегрузке операторов C# идеально подошёл для цели симуляции SQL прямо в коде.
Кейс конечно не частый но как будто расширения для кастомный или только для функций посгрес дает нам жесткую привязку к посгресу, что не самое приятное когда ее вдруг придется менять.
35:39 закладка для себя
KNN прикольная штука, не знал. Jsonb похожи на bson от монги😮