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