Esempio n. 1
0
        private EntityCreatedEvent EventStreamRoundTripEvent(EntityCreatedEvent evt)
        {
            EventStreamHeader header = new EventStreamHeader(new VectorClock(), new Infrastructure.VectorClock(), Guid.NewGuid(), Guid.NewGuid());

            MemoryStream stream = new MemoryStream();

            using (EventStreamWriter writer = new EventStreamWriter(stream, header, false))
            {
                writer.WriteEvent(evt);
            }

            stream.Seek(0, SeekOrigin.Begin);

            using (stream)
                using (EventStreamReader reader = new EventStreamReader(stream))
                {
                    while (reader.Read())
                    {
                        if (reader.ItemType == ItemType.Event)
                        {
                            return((EntityCreatedEvent)reader.CurrentEvent);
                        }
                    }
                }

            throw new InvalidOperationException("The event could not be round tripped");
        }
Esempio n. 2
0
    public async Task <TEntity> GetByIdAsync(TKey id)
    {
        var streamId     = GenerateStreamId(id);
        var streamEvents = await EventStreamReader.Read(_connection, streamId, StreamPosition.Start, 200);

        var domainEvents = DomainEventFactory.Create(streamEvents, _eventTypeResolver);

        return(AggregateFactory.Create <TEntity>(domainEvents));
    }