コード例 #1
0
        private void ApplySlice(int maxVersion, StreamEventsSlice slice, IAggregate aggregate)
        {
            int version       = aggregate.Version;
            var eventsToApply = from @event in slice.Events
                                where++ version <= maxVersion
                                select _serializer.DeserializeEventData(@event);

            using (var rehydrateAggregate = aggregate.BeginRehydrate())
            {
                eventsToApply.ForEach(rehydrateAggregate.ApplyEvent);
            }
        }
コード例 #2
0
        private static int ApplyEventsToAggregate(IEnumerable <ICommit> commits, IAggregate aggregate)
        {
            int lastStreamRevision = 1;

            foreach (var commit in commits)
            {
                lastStreamRevision = commit.StreamRevision;
                using (var rehydrateAggregate = aggregate.BeginRehydrate())
                {
                    foreach (var eventMessage in commit.Events)
                    {
                        rehydrateAggregate.ApplyEvent(eventMessage.Body);
                    }
                }
            }

            return(lastStreamRevision);
        }