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); } }
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); }