public void RemoveEntriesOlderThan(DateTime dateTime) { using (new TransactionScope(TransactionScopeOption.Suppress)) { using (var tx = _dbContext.Database.BeginTransaction(IsolationLevel.ReadCommitted)) { var query = _dbContext.OutboxRecords.Where(e => e.Dispatched && e.DispatchedAt < dateTime); _dbContext.OutboxRecords.RemoveRange(query); _dbContext.SaveChanges(); tx.Commit(); } } }
public virtual IEnumerable <DomainEvent> PendingEvents() { foreach (var outboxEvent in dbContext.OutboxEvents .Where(oe => !oe.ProcessedDate.HasValue) .OrderBy(oe => oe.Id)) { outboxEvent.ProcessedDate = DateTimeOffset.Now; dbContext.SaveChanges(); yield return(ToDomainEvent(outboxEvent)); } }