Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Entity Framework: bulk, update, raw, sql, execute

Как обновить одно поле у большого количества записей в таблице через Entity Framework?

Проверяет знание оптимальных приёмов массового обновления без загрузки всех сущностей.

Короткий ответ

Вместо загрузки и поштучного изменения сущностей используйте пакетные библиотеки (например, 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.

Когда использовать:

  • При миллионах строк, критична скорость и ресурсы.

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • Entity Framework

    Entity Framework

Ключевые слова

#bulk

#update

#raw

#sql

#execute

Подпишись на C# Developer в телеграм