public Task Save <TAggregate>(TAggregate aggregate) where TAggregate : IEvented { _pendingEvents.AddEvents <TAggregate>(aggregate.GetPendingEvents()); aggregate.ClearPendingEvents(); return(Task.CompletedTask); }
private void PerformCommit() { _pendingEvents.ForEach((aggregateType, aggregateID, events) => { _storeEvents.AddEvents(aggregateType, aggregateID, events); foreach (var projection in _projections) { foreach (var @event in events) { projection.Apply(@event); } } }); _pendingEvents.Clear(); }