PartitionKey, извлеченный из документа, не совпадает с указанным в заголовке на CreateItemAsync - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть небольшая проблема с использованием Microsoft.Azure.Cosmos версии 3.2.0,

при запуске

await this.Container.CreateItemAsync<LogEntity>(logEntity, new PartitionKey("anythingIPutHere"));

выдает

Microsoft.Azure.Cosmos.CosmosException HResult = 0x80131500
Сообщение = Код состояния ответа не указывает на успех: 400 Подстатус: 1001 Причина: (Сообщение: {"Ошибки": ["PartitionKey, извлеченный из документа, не соответствует указанному взаголовок "]}

но если я поставлю,

await this.Container.CreateItemAsync<LogEntity>(logEntity, new PartitionKey(logEntity.Id));

, это работает, и это единственный случай, когда это работает.

Я также пытался: Установка значения ключа раздела в качестве свойства объекта. Даже указание имени свойства json «partitionKey», но безуспешно.

Я просмотрел несколько руководств на сайте Microsoft и, похоже, вы можете указатьключ раздела должен быть некоторой строкой, необязательно быть идентификатором или указываться с именем свойства объекта, так почему это происходит?

1 Ответ

0 голосов
/ 26 сентября 2019

Я упустил из виду, что когда я создал контейнер

this.Container = await this.Database.CreateContainerIfNotExistsAsync("testContainer", "/id");

, я указал partitionKeyPath как /id.

Также кажется, что ключ раздела долженнаходиться на объекте и должно иметь свойство json имени свойства partitionKeyPath без / like:

[JsonProperty(PropertyName = "partition")]
public string Partition { get; set; }

, если partitionKeyPath равно /partition

this.Container = await this.Database.CreateContainerIfNotExistsAsync("testContainer", "/partition");

Извините, если это очевидно,Я только начал играть с CosmoDb.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...