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会参与进来。它可能在是的,这是我的错误,包括在博客上删除,这被纠正了。对不起!博客被纠正了,实际上更新了一个新的全局选项。