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));
     }
 }