有没有一种方法可以从
DocumentClientException
StatusCode == HttpStatusCode.NotFound
是文档、集合还是数据库找不到?
我正在尝试确定是否可以实现按需收集配置,而只调用
DocumentClient.CreateDocumentCollectionIfNotExistsAsync
当我需要的时候。我尽量避免在发出每个请求之前调用它(这可能会给每个请求增加一个额外的网络往返)。同样,我也尽量避免在错误恢复时调用它。
通过对本地仿真器的实验,我看到在这三种情况下唯一不同的字段是
DocumentClientException.Error.Message
,并且仅当找不到数据库时。我通常尝试避免基于人类可读消息的异常调度。
错误的数据库名称:
-
StatusCode
:
HttpStatusCode.NotFound
-
Error.Message
:
{\"Errors\":[\"Owner resource does not exist\"]}...
-
状态描述
:
HttpStatusCode.NotFound
-
错误。消息
:
{\"Errors\":[\"Resource Not Found\"]}...
正确的数据库名称、正确的集合名称、错误的文档ID:
-
状态描述
HttpStatusCode.NotFound
-
错误。消息
:
{\“错误\”:[\“找不到资源\”]}。。。
can segregate each tenant in my multi-tenant application into its own collection
. 每个租户最终都有不同的索引和默认TTL策略。集合集不是固定的,在运行时会随着新租户的注册而动态更改。我无法预测何时需要添加新的集合。这里没有新的租户通知:我只需要通过在可能不存在的集合中创建文档来处理请求。有一个对未使用的集合进行垃圾回收的过程。
我用的是NuGet软件包Microsoft.Azure.DocumentDB.NET Core 2.1应用程序中的.Core版本1.9.1,目标是SQL API Cosmos DB实例。