Проверяет знание оптимальных приёмов массового обновления без загрузки всех сущностей.
Вместо загрузки и поштучного изменения сущностей используйте пакетные библиотеки (например, EFCore.BulkExtensions) или выполняйте прямой SQL UPDATE через context.Database.ExecuteSqlRaw. Это обновит поле на стороне БД в одну операцию и не будет грузить память.
ExecuteSqlRaw:
context.Database.ExecuteSqlRaw(
"UPDATE Orders SET Status = {0} WHERE Created < {1}", newStatus, cutoffDate);BulkExtensions:
context.BulkUpdate(entities, options => {
options.PropertiesToInclude = new[] { nameof(Entity.Field) };
});Shared Transaction:
Оборачиваем в using var tx = context.Database.BeginTransaction().
Преимущество:
Один SQL-запрос, низкая нагрузка на память и EF Change Tracker.
Когда использовать:
При миллионах строк, критична скорость и ресурсы.