public int SaveEvent(IEvent @event, DbTransaction transaction)
        {
            if (transaction == null)
            {
                throw new ArgumentNullException("transaction", $"A {typeof(DbTransaction).FullName} is required as a pre-requisite to save the event.");
            }

            var eventLogEntry = new IntegrationEventLogEntry(@event);

            _integrationEventLogContext.Database.UseTransaction(transaction);
            _integrationEventLogContext.IntegrationEventLogs.Add(eventLogEntry);
            //throw new Exception("test exception");
            return(_integrationEventLogContext.SaveChanges());
        }
        private StoredEvent SaveIntegrationEventLogContext(IDomainEvent domainEvent)
        {
            var eventLogEntry = new IntegrationEventLogEntry(Guid.NewGuid().ToString(),
                                                             domainEvent.GetType().FullName,
                                                             domainEvent.TimeStamp.DateTime,
                                                             JsonConvert.SerializeObject(domainEvent)
                                                             );

            eventLogEntry.TimesSent++;
            eventLogEntry.State = EventStateEnum.Published;

            _integrationEventLogContext.IntegrationEventLogs.Add(eventLogEntry);

            int result = _integrationEventLogContext.SaveChanges();

            return(new StoredEvent(domainEvent.GetType().FullName, domainEvent.TimeStamp.DateTime, JsonConvert.SerializeObject(domainEvent)));
        }