I have a bit of a problem using Microsoft.Azure.Cosmos version 3.2.0,
upon running
await this.Container.CreateItemAsync<LogEntity>(logEntity, new PartitionKey("anythingIPutHere"));
it throws
Microsoft.Azure.Cosmos.CosmosException HResult=0x80131500
Message=Response status code does not indicate success: 400 Substatus: 1001 Reason: (Message: {"Errors":["PartitionKey extracted from document doesn't match the one specified in the header"]}
but if I put,
await this.Container.CreateItemAsync<LogEntity>(logEntity, new PartitionKey(logEntity.Id));
it works and it is the only case when it works.
I have also tried
partitionKey
JSON property name but no success;I looked over some guides on the Microsoft site and it seems you can specify the partition key to be some string, not necessary to be the id or specified with a property name on the object; so why is this happening?
I've overlooked that when I have created the container
this.Container = await this.Database.CreateContainerIfNotExistsAsync("testContainer", "/id");
I have specified partitionKeyPath
as beeing the /id
.
It also seems that the partition key must reside on the object and must have a json property of partitionKeyPath property name without / like:
[JsonProperty(PropertyName = "partition")]
public string Partition { get; set; }
if partitionKeyPath
is /partition
this.Container = await this.Database.CreateContainerIfNotExistsAsync("testContainer", "/partition");
Sorry if this is obvious, I have just started playing around with CosmoDb.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With