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