努力弄清楚如何在我的业余项目中使用 cosmos db。 并且无法理解我如何为容器创建新记录。
我有一些通用存储库方法,由控制器调用:
public async Task CreateAsync(TEntity entity, string partitionKey)
{
var itemResponse = await _container.CreateItemAsync<TEntity>(entity, new PartitionKey(partitionKey));
entity.Id = itemResponse.ActivityId;
}
控制器:
[HttpPost("language")]
public async Task<IActionResult> CreateLanguage(Language language)
{
await languageRepository.CreateAsync(language, "language");
return Ok();
}
语言容器具有分区键 -> /language。
现在我只想通过邮递员测试我的服务:
{
"Language": "Spanish",
"Name": "Spanish",
"LanguageImage": ""
}
型号:
public class Language : Entity
{
[JsonProperty("language_name")]
public string Name { get; set; }
[JsonProperty("language_image")]
public string LanguageImage { get; set; }
public Language() : base(true)
{
}
}
public class Entity
{
[JsonProperty("id")]
public string Id { get; set; }
[JsonProperty("ttl")]
public int Ttl { get; set; }
public Entity(bool generateId = true)
{
SetDefaultTimeToLive();
if (generateId)
{
this.Id = Guid.NewGuid().ToString();
}
}
public virtual void SetDefaultTimeToLive()
{
Ttl = -1;
}
}
发送查询后,收到错误消息:从文档中提取的 PartitionKey 与标头中指定的不匹配。
我尝试在标头中添加分区键,作为参数,也添加到 json,但仍然收到相同的错误。
那么您是否有一组具有“语言”属性的 JSON 文档存储在 Cosmos DB 中?您希望它根据“语言”属性分区到不同的存储吗?
如果是的话,你可以看看这个问题: 从文档中提取的 PartitionKey 与 CreateItemAsync 标头中指定的不匹配
否则,也许可以解释一下您使用的是什么类型的 Cosmos DB?也许分享完整的帖子正文?