Вступить в клуб →
лёгкаявопросEntity Framework Core и LINQ

Что даёт AsNoTracking в запросе только на чтение

Эндпоинт GET /api/orders возвращает список из нескольких тысяч заказов. На код-ревью просят добавить в запрос AsNoTracking().

var orders = await db.Orders
    .Where(o => o.CreatedAt >= from)
    .AsNoTracking()
    .ToListAsync();

Что именно даёт этот вызов?

  • Сущности не попадают в трекер изменений: экономятся память и время, но SaveChanges не увидит правки таких объектов
  • Запрос выполняется в режиме read-only на стороне базы и берёт более слабую блокировку строк
  • Результат кэшируется и переиспользуется между HTTP-запросами
  • Отключается ленивая загрузка навигационных свойств, чтобы случайно не получить лишние запросы к базе при обходе коллекций

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела