Ejemplo n.º 1
0
        public async Task <IReadOnlyCollection <IDomainEvent> > LoadAsync(IEntityId aggregateId)
        {
            if (aggregateId == null)
            {
                throw new Exception("Not found");
            }

            var query = new StringBuilder($@"SELECT {EventStoreListOfColumnsSelect} FROM {EventStoreTableName}");

            query.Append(" WHERE [AggregateId] = @AggregateId ");
            query.Append(" ORDER BY [Version] ASC;");

            using (var connection = _connectionFactory.SqlConnection())
            {
                var events       = (await connection.QueryAsync <EventStoreDao>(query.ToString(), new { AggregateId = aggregateId.ToString() }));
                var domainEvents = events.Select(_serializerService.TransformEvent).Where(@event => @event != null).ToList().AsReadOnly();
                return(domainEvents);
            }
        }