使用Microsoft.Azure.Cosmos版本3.2.0时,我有点问题
跑步时
await this.Container.CreateItemAsync<LogEntity>(logEntity, new PartitionKey("anythingIPutHere"));
它抛出
Microsoft.Azure.Cosmos.CosmosException HResult = 0x80131500
消息=响应状态代码不表示成功:400子状态: 1001原因:(消息:{“错误”:[”从 文档与标题中指定的文档不匹配“]}
但如果我愿意,
await this.Container.CreateItemAsync<LogEntity>(logEntity, new PartitionKey(logEntity.Id));
它有效,这是唯一可行的情况。
我也尝试过: 将分区键的值作为属性放在对象中。 即使指定了“ partitionKey” json属性名称,也没有成功。
我查看了Microsoft网站上的一些指南,看来您可以将分区键指定为某些字符串,而不必指定为id或在对象上使用属性名称指定;那为什么会这样呢?
答案 0 :(得分:3)
创建容器时,我已经忽略了
this.Container = await this.Database.CreateContainerIfNotExistsAsync("testContainer", "/id");
我已将partitionKeyPath
指定为/id
的蜜蜂。
似乎分区键也必须驻留在对象上,并且必须具有partitionKeyPath属性名称的json属性,不带/像这样:
[JsonProperty(PropertyName = "partition")]
public string Partition { get; set; }
如果partitionKeyPath
是/partition
this.Container = await this.Database.CreateContainerIfNotExistsAsync("testContainer", "/partition");
很抱歉,如果这很明显,我刚刚开始使用CosmoDb。