Если у вас есть проблемы с производительностью LINQ-запросов, обратите внимание на новую фичу EF Core 5.0 под названием Query Splitting.
📌 Вызываем метод
AsSplitQuery
:dbContext
.Orders
.Include(order => order.LineItems)
.ThenInclude(lineItem => lineItem.Dimensions)
.AsSplitQuery()
.First(order => order.Id == orderId);
В этом случае EF Core сгенерирует следующие SQL-запросы:
SELECT o.*
FROM Orders o
WHERE o.Id = @orderId;
SELECT li.*
FROM LineItems li
JOIN Orders o ON li.OrderId = o.Id
WHERE o.Id = @orderId;
SELECT d.*
FROM LineItemDimensions d
JOIN LineItems li ON d.LineItemId = li.Id
JOIN Orders o ON li.OrderId = o.Id
WHERE o.Id = @orderId;
Для каждого оператора Include у нас есть отдельный SQL-запрос. Преимущество в том, что мы не дублируем данные при извлечении из БД.
📌 Включаем разделение запросов для всех запросов:
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
"CONNECTION_STRING",
o => o.UseQuerySplittingBehavior(
QuerySplittingBehavior.SplitQuery)));
Все создаваемые EF Core запросы будут разделенными. Чтобы вернуться к одному запросу, нужно вызвать метод
AsSingleQuery
:dbContext
.Orders
.Include(o => o.LineItems)
.ThenInclude(li => li.Dimensions)
.AsSingleQuery()
.First(o => o.Id == orderId);
🔸Не существует гарантии согласованности для нескольких SQL-запросов. Вы можете столкнуться с проблемой, если одновременно с запросом происходит параллельное обновление.
🔸Чтобы смягчить это, вы можете обернуть запросы внутри транзакции, но это приведет только к проблемам с производительностью в других местах.
🔸Каждый запрос требует сетевого обращения. Если задержки при обращении к БД высоки, это может снизить производительность.
#dotnet #aspnet #tip by Milan Jovanovic
Please open Telegram to view this post
VIEW IN TELEGRAM
Milan Jovanović
How To Improve Performance With EF Core Query Splitting
I recently ran into an issue with Entity Framework Core. The query I was running was constantly timing out. So I used a new EF Core feature called Query Splitting to significantly improve my performance.
👍26🤔3❤1
🧠Чему вы бы хотели научиться?
Расскажите нам о ваших пожеланиях: какие навыки вы хотели бы прокачать в ближайшее время или какую профессию хотели бы приобрести?
За прохождение опроса вы получите промокод на скидку 15% на все наши курсы до конца 2024 года.
👉Опрос по ссылке👈
Расскажите нам о ваших пожеланиях: какие навыки вы хотели бы прокачать в ближайшее время или какую профессию хотели бы приобрести?
За прохождение опроса вы получите промокод на скидку 15% на все наши курсы до конца 2024 года.
👉Опрос по ссылке👈
🥱2👍1👏1😁1
Почему в Kotlin такие конструкторы работают, а в C# — нет?
👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
1000 и 1 способ инициализации типов в C# 12.0
Среди нововведений C# 12 было достаточно больше количество по-настоящему качественных и крутых фич (например дефолтные параметры лямбд). Но речь сегодня пойдет о ложке дёгтя в бочке мёда - Primary...
👏9❤🔥1🥱1
🤷♂️ Никогда такого не было, и вот опять…
Опрос Российской ассоциации электронных коммуникаций говорит о снижении доходов IT-специалистов, тогда как те же аналитики hh.ru отмечают рост медианной зарплаты.
💬 А как поживают ваши доходы?
🥱 — упали, но незначительно
🙏 — упали сильно
🤩 — выросли
Опрос Российской ассоциации электронных коммуникаций говорит о снижении доходов IT-специалистов, тогда как те же аналитики hh.ru отмечают рост медианной зарплаты.
💬 А как поживают ваши доходы?
🥱 — упали, но незначительно
🙏 — упали сильно
🤩 — выросли
🤩88🥱47🙏24🤔13👍3
Ранее мы публиковали серию новых плейлистов с видеоуроками, но здесь каждый из них кратко описан, чтобы вы могли подобрать для себя подходящий.
Вас ждут девять новых серий для начинающих по C#, .NET, генеративному ИИ, NuGet, Visual Studio, VS Code + C# Dev Kit, Blazor Hybrid, .NET IoT и обновлению .NET-приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤3👏1
Forwarded from Библиотека C/C++ разработчика | cpp, boost, qt
🔟🏢 ТОП-10 российских IT-работодателей
Рейтинг работодателей, которые могут конкурировать по условиям труда с лидерами рынка.
Читать статью
#почитать
Рейтинг работодателей, которые могут конкурировать по условиям труда с лидерами рынка.
Читать статью
#почитать
🥱11😁7👍2🌚1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
This media is not supported in the widget
VIEW IN TELEGRAM
👍44
Microsoft MVP Steve Gordon делится опытом использования dotMemory для оптимизации кода и демонстрирует функцию автоматизации сбора снэпшотов памяти:
☑️ Использование dotMemory и автоматизация рутинных операций
☑️ Использование NuGet пакета JetBrains.Profiler.Api
☑️ Профилирование кода
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔6👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14⚡4👍3