예제 #1
0
        public override async Task <ReadModelEnvelope <TReadModel> > GetAsync(string id, CancellationToken cancellationToken)
        {
            var readModelType           = typeof(TReadModel);
            var readModelNameLowerCased = readModelType.Name.ToLowerInvariant();
            var selectSql  = _readModelSqlGenerator.CreateSelectSql <TReadModel>();
            var readModels = await _connection.QueryAsync <TReadModel>(
                Label.Named(string.Format("mssql-fetch-read-model-{0}", readModelNameLowerCased)),
                cancellationToken,
                selectSql,
                new { EventFlowReadModelId = id })
                             .ConfigureAwait(false);

            var readModel = readModels.SingleOrDefault();

            if (readModel == null)
            {
                Log.Verbose(() => $"Could not find any MSSQL read model '{readModelType.PrettyPrint()}' with ID '{id}'");
                return(ReadModelEnvelope <TReadModel> .Empty(id));
            }

            var readModelVersion = GetVersion(readModel);

            Log.Verbose(() => $"Foud MSSQL read model '{readModelType.PrettyPrint()}' with ID '{readModelVersion}'");

            return(readModelVersion.HasValue
                ? ReadModelEnvelope <TReadModel> .With(id, readModel, readModelVersion.Value)
                : ReadModelEnvelope <TReadModel> .With(id, readModel));
        }
        public override async Task <ReadModelEnvelope <TReadModel> > GetAsync(string id, CancellationToken cancellationToken)
        {
            var readModelNameLowerCased = typeof(TReadModel).Name.ToLowerInvariant();
            var selectSql  = _readModelSqlGenerator.CreateSelectSql <TReadModel>();
            var readModels = await _connection.QueryAsync <TReadModel>(
                Label.Named(string.Format("mssql-fetch-read-model-{0}", readModelNameLowerCased)),
                cancellationToken,
                selectSql,
                new { AggregateId = id })
                             .ConfigureAwait(false);

            var readModel = readModels.SingleOrDefault();

            return(readModel == null
                ? ReadModelEnvelope <TReadModel> .Empty
                : ReadModelEnvelope <TReadModel> .With(readModel, readModel.LastAggregateSequenceNumber));
        }