private static async Task ClampHistory(ModelDbContext dbContext, long serviceInstanceId, int maxHistorySize, CancellationToken cancellationToken) { var statusEntryCount = await dbContext.ServiceStatus.Where(s => s.ServiceInstanceId == serviceInstanceId) .LongCountAsync(cancellationToken).ConfigureAwait(false); var entriesToDeleteCount = statusEntryCount - maxHistorySize; if (entriesToDeleteCount > 0) { var entriesToDelete = await dbContext.ServiceStatus.Where(s => s.ServiceInstanceId == serviceInstanceId) .OrderBy(s => s.CreatedAt).Take((int)entriesToDeleteCount).ToListAsync(cancellationToken) .ConfigureAwait(false); if (entriesToDelete.Any()) { dbContext.RemoveRange(entriesToDelete); } } }