public async Task <T> Load <T>(Guid aggregateId, CancellationToken cancellationToken = default) where T : IAggregate, new() { var aggregate = new T(); var containerName = CosmosExtensions.GetContainerName <T>(); var db = await _client.CreateDatabaseIfNotExistsAsync("LoyaltyCardDB"); var container = await db.Database.CreateContainerIfNotExistsAsync(containerName, "/AggregateId"); QueryDefinition query = new QueryDefinition("select * from t where t.AggregateId = @aggregateId") .WithParameter("@aggregateId", aggregateId.ToString()); FeedIterator <EventData> queryResultSetIterator = container.Container.GetItemQueryIterator <EventData>(query); while (queryResultSetIterator.HasMoreResults) { FeedResponse <EventData> currentResultSet = await queryResultSetIterator.ReadNextAsync(); aggregate.Load( currentResultSet.Last().Version, Enumerable.ToArray(currentResultSet.Select(re => _serializer.DeserializeFromJson(re.Data, re.EventType)))); } return(aggregate); }