コード例 #1
0
        public Task Save <TAggregate>(TAggregate aggregate) where TAggregate : IEvented
        {
            _pendingEvents.AddEvents <TAggregate>(aggregate.GetPendingEvents());

            aggregate.ClearPendingEvents();

            return(Task.CompletedTask);
        }
コード例 #2
0
        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();
        }