Как обойти необходимость использования PartitionKey в параметрах запроса при использовании ReadDocumentAsync в веб-API C # Azure Cosmos DB Web? - PullRequest
1 голос
/ 23 мая 2019

Мне нужен доступ к одному из элементов, хранящихся в базе данных Cosmos, но у меня нет значения ключа раздела, который теперь требуется для ReadDocumentAsync.Я использовал устаревший CreateDocumentQuery, но это заняло слишком много времени, чтобы вернуть ответ клиенту, запрашивающему этот запрос.

Проект выглядит следующим образом: я пытаюсь сохранить животных и связанные вложения в базе данных, котораяв них хранятся следующие параметры:

{
    "nextId": "1",
    "id": "2",
    "predEnclosure": "true",
    "maxCapacity": 10,
    "currentCapacity": 0,
    "animals": [],
}

В качестве predEnclosure у меня есть ключ разделения, и теоретически у него будет только идентификатор для доступа к корпусу.Я не уверен, существует ли другой метод для извлечения документов из контейнера.Это веб-API .NET Core, подключающийся к базе данных Cosmos.

public async Task<CustomHttpResponseMessage<dynamic>> GetEnclosure(string id)
{
    try
    {
        Enclosure enclosure = await dbClient.ReadDocumentAsync<Enclosure>(
                dbHandler.GetDocumentUri(id), options);
        return new CustomHttpResponseMessage<dynamic>(HttpStatusCode.OK, enclosure);
    }
    catch (Exception e)
    {
        Console.WriteLine($"Could not get given animal! Error: {e.Message}");
        return new CustomHttpResponseMessage<dynamic>(HttpStatusCode.NotFound, "Could not find the given enclosure!");
    }
}

Выше будет сказано, что мне нужен ключ раздела для вызова этого метода.Я ожидал, что он вернет корпус из базы данных без использования ключа раздела.

1 Ответ

0 голосов
/ 24 мая 2019

Это немного сложно, но все же вы можете сделать это,

MyItem item = (dynamic)client.ReadDocumentAsync(UriFactory.CreateDocumentUri(DbName, CollectionName, id), new RequestOptions() { PartitionKey = new PartitionKey(Undefined.Value)}).Result.Resource;

Прочитайте следующее,

https://www.lytzen.name/2016/12/06/find-docs-with-no-partitionkey-in-azure.html

...