Beispiel #1
0
        public TAggregate GetById <TAggregate>(string streamName) where TAggregate : class, IAggregate
        {
            EnsureConnected();

            var aggregate = ConstructAggregate <TAggregate>();

            StreamEventsSlice currentSlice;
            var nextSliceStart = 0;

            do
            {
                currentSlice   = _eventStoreConnection.ReadStreamEventsForward(streamName, nextSliceStart, ReadPageSize, true);
                nextSliceStart = currentSlice.NextEventNumber;

                foreach (var evnt in currentSlice.Events)
                {
                    aggregate.ApplyEvent(_adapter.DeserializeEvent(evnt.Event));
                }
            } while (!currentSlice.IsEndOfStream);

            return(aggregate);
        }