Azure cosmosdb DeleteItemAsync不会返回要删除的项
返回保存属性的Azure cosmosdb DeleteItemAsync不会返回要删除的项,azure-cosmosdb,Azure Cosmosdb,返回保存属性的ItemResponse。这意味着调用将返回实际删除的文档 但是Resource属性始终为null,并且状态设置为NoContent,因此此调用似乎从未返回实际删除的文档。当它从不返回类型的实例时,为什么它会返回类型化响应呢。还描述了删除文档时如何显式禁用响应。这也意味着应该删除该项目 我已经检查了数据库,但文档实际上正在被删除。尝试删除不存在的文档会导致NotFound状态并引发异常 我也尝试过设置EnableContentResponseOnWrite=true,但这没有任何作
ItemResponse
。这意味着调用将返回实际删除的文档
但是Resource
属性始终为null
,并且状态设置为NoContent
,因此此调用似乎从未返回实际删除的文档。当它从不返回类型的实例时,为什么它会返回类型化响应呢。还描述了删除文档时如何显式禁用响应。这也意味着应该删除该项目
我已经检查了数据库,但文档实际上正在被删除。尝试删除不存在的文档会导致NotFound
状态并引发异常
我也尝试过设置
EnableContentResponseOnWrite=true
,但这没有任何作用。我试过Microsoft.Azure.Cosmos v3.14和v3.19。两者都有相同的结果…鉴于ItemResponse
建议使用已删除项填充T,但实际上为空,因此DeleteItemAsync
返回类型有点误导
也许更清晰的方法是使用和检查响应代码,如下所示:
using ResponseMessage response = await container.DeleteItemStreamAsync(itemId, new(partitionKey), options);
if (response.StatusCode == HttpStatusCode.NoContent)
{
// Success
}
else
{
// Failed
}
现在您可以避免异常抛出开销,并且代码不会误导内容为非空。鉴于
ItemResponse
建议使用已删除项填充t,但实际上为空,因此DeleteItemAsync
返回类型有点误导
也许更清晰的方法是使用和检查响应代码,如下所示:
using ResponseMessage response = await container.DeleteItemStreamAsync(itemId, new(partitionKey), options);
if (response.StatusCode == HttpStatusCode.NoContent)
{
// Success
}
else
{
// Failed
}
现在,您可以避免异常抛出开销,并且代码不会误导内容为非空。似乎是默认行为:。这很糟糕,因为我现在需要先阅读文档,然后再删除它:-(不清楚您的实际问题是什么…@NoahStahl
容器。DeleteItemAsync
返回一个保存资源的ItemResponse
对象。唯一的逻辑结论是它将包含已删除的文档,但它总是null
。这显示了如何显式禁用此功能,因此它将提示默认情况是它返回已删除的文档。但它不是…似乎是默认行为:。这很糟糕,因为我现在需要先读取文档,然后再删除它:-(不清楚您的实际问题是什么…@NoahStahl容器。DeleteItemAsync
返回一个保存资源的ItemResponse
对象。唯一的逻辑结论是它将包含已删除的文档,但它总是null
。这显示了如何显式禁用此功能,因此它将默认情况下,它会返回已删除的文档。但事实并非如此……看起来是这样。但奇怪的是,MS Cosmos DB工程师的官方博客文章暗示它确实返回了数据:-(使用DeleteItemStreamAsync
更尴尬,因为它返回一个应该被处理的ResponseMessage
。你的例子应该使用使用作为response
变量。我同意博客确实暗示了非空,不确定意图。也许Matias会参与进来。它可能在e.NET SDK repo:是的,是我的错误,在博客上包含了删除,这被更正了。抱歉!博客被更正了,并且实际更新了一个新的全局选项。看起来是这样。但奇怪的是,MS Cosmos DB工程师的一篇官方博客文章暗示它确实返回了数据:-(使用DeleteItemStreamAsync
更尴尬,因为它返回一个应该被处理的ResponseMessage
。你的例子应该使用使用作为response
变量。我同意博客确实暗示了非空,不确定意图。也许Matias会参与进来。它可能在是的,这是我的错误,包括在博客上删除,这被纠正了。对不起!博客被纠正了,实际上更新了一个新的全局选项。