Example #1
0
 /// <summary>
 /// Dispatches each <see cref="IDomainEvent"/> that was added to any <see cref="IAggregateRoot"/> before <see cref="CommitAsync"/> was called.
 /// </summary>
 /// <param name="dispatcher">The <see cref="IDomainEventDispatcher"/>.</param>
 /// <param name="events">The <see cref="IEnumerable{T}"/> of <see cref="IDomainEvent"/>.</param>
 /// <returns></returns>
 protected virtual async Task DispatchEventsAsync(IDomainEventDispatcher dispatcher, IEnumerable <IDomainEvent> events)
 {
     foreach (var @event in events)
     {
         await dispatcher.RaiseAsync(@event);
     }
 }
Example #2
0
        public virtual async Task CommitAsync()
        {
            var events = new List <IDomainEvent>();

            foreach (var entity in GetEntities().Where(e => e.DomainEvents.Any()))
            {
                events.AddRange(entity.DomainEvents);
                entity.ClearEvents();
            }

            foreach (var @event in events)
            {
                await _dispatcher.RaiseAsync(@event);
            }
        }