예제 #1
0
 private void Then()
 {
     if (_eventStack == null)
     {
         IAggregateLoader loader = GetOrder();
         var uncommitedEvents    = loader.GetUncommittedChanges();
         _eventStack = new Stack <LoadedEvent>(uncommitedEvents.Reverse());
     }
 }
예제 #2
0
        public async Task SaveAsync(TAggregateRoot aggregate)
        {
            IAggregateLoader loader = aggregate;
            var changes             = loader.GetUncommittedChanges();

            if (changes.Any())
            {
                var streamName = GetStreamName(aggregate.GetIdentifier());
                await _eventStore.SaveEventsAsync(streamName, aggregate.Version, changes);

                loader.MarkChangesAsCommitted();
            }
        }