public async Task <int> TrimAsync(TimeSpan retentionPeriod)
        {
            var dateThreshold    = _clock.UtcNow.AddDays(1) - retentionPeriod;
            var auditTrailEvents = await _session.Query <AuditTrailEvent, AuditTrailEventIndex>()
                                   .Where(index => index.CreatedUtc <= dateThreshold).ListAsync();

            var deletedEvents = 0;

            // Related Orchard Core issue to be able to delete items without a foreach:
            // https://github.com/OrchardCMS/OrchardCore/issues/5821
            foreach (var auditTrailEvent in auditTrailEvents)
            {
                _session.Delete(auditTrailEvent);
                deletedEvents++;
            }

            return(deletedEvents);
        }
コード例 #2
0
        public async Task <int> TrimEventsAsync(TimeSpan retentionPeriod)
        {
            var dateThreshold = _clock.UtcNow.AddDays(1) - retentionPeriod;

            var events = await _session.Query <AuditTrailEvent, AuditTrailEventIndex>(collection : AuditTrailEvent.Collection)
                         .Where(index => index.CreatedUtc <= dateThreshold)
                         .ListAsync();

            var deletedEvents = 0;

            foreach (var auditTrailEvent in events)
            {
                _session.Delete(auditTrailEvent, collection: AuditTrailEvent.Collection);
                deletedEvents++;
            }

            return(deletedEvents);
        }