public void SaveEvents(IAggregateRoot aggregateRoot)
        {
            var events = new List <Event>();

            var changes = aggregateRoot.GetAllChanges();

            var enumerator = changes.GetEnumerator();
            var count      = 0;

            while (enumerator.MoveNext())
            {
                count++;
                var @event = enumerator.Current;

                events.Add(new Event()
                {
                    AggregateId = @event.AggregateId,
                    EventType   = @event.GetType().AssemblyQualifiedName,
                    EventData   = _serialiser.SerialiseAs(@event.GetType(), @event),
                    Timestamp   = @event.TimeStamp
                });

                _genericEntityService.SaveOrUpdateEntities(events);
            }
        }
Beispiel #2
0
        public void SaveEvents(IAggregateRoot aggregateRoot)
        {
            var changes = aggregateRoot.GetAllChanges();

            var enumerator = changes.GetEnumerator();

            try
            {
                while (enumerator.MoveNext())
                {
                    var @event = enumerator.Current;

                    allEvents.Add(new Event()
                    {
                        AggregateId = @event.AggregateId,
                        EventType   = @event.GetType().AssemblyQualifiedName,
                        EventData   = _serialiser.SerialiseAs(@event.GetType(), @event),
                        Timestamp   = @event.TimeStamp
                    });
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                logger.ErrorFormat("Failed to save events!");
                throw;
            }
        }
        public void SaveEvents(IAggregateRoot aggregateRoot)
        {
            var changes = aggregateRoot.GetAllChanges();

            var enumerator = changes.GetEnumerator();
            var count = 0;

            using (var connection = new SqlConnection(_connectionString))
            {
                connection.Open(); 
                var transaction = connection.BeginTransaction();

                while (enumerator.MoveNext())
                {
                    count++;
                    var @event = enumerator.Current;

                    var eventToSave = new Event()
                    {
                        AggregateId = @event.AggregateId,
                        EventType = @event.GetType().AssemblyQualifiedName,
                        EventData = _serialiser.SerialiseAs(@event.GetType(), @event),
                        Timestamp = @event.TimeStamp
                    };

                    connection.Execute(SAVE_EVENT, new
                    {
                        AggregateId = eventToSave.AggregateId,
                        EventType = eventToSave.EventType,
                        EventData = @eventToSave.EventData,
                        TimeStamp = eventToSave.Timestamp,
                    });
                }

                transaction.Commit();
                connection.Close();
            }
        }