Create if not exists 方法不可用

Create if not exists methods not available

我有一个 .Net 核心应用程序,我已将 cosmos nuget 包安装到:

Install-Package Microsoft.Azure.DocumentDB.Client

我正在尝试按照 MS here 给出的说明进行操作,其中详细说明了如何创建数据库和集合。

使用依赖注入,我已经注册了IDocumentClient。但是,当我尝试在设置 class 中使用它来创建数据库和集合时,以下方法未列为可用方法:

public void Setup(IDocumentClient client)
{
    await client.CreateDatabaseIfNotExistsAsync(new Database() { Id = databaseId });

    await client.CreateDocumentCollectionIfNotExistsAsync(UriFactory.CreateDatabaseUri(databaseId), new DocumentCollection { Id = "Identity" });
}

在这两种情况下,方法都标记为未知,IDE 提示我创建它们。即使使用文件中定义的 Microsoft.Azure.Documents.Client 命名空间也会发生这种情况。

虽然这些方法存在于 DocumentClient class 中,但它们实际上并不是 IDocumentClient 接口的一部分。

以这种方式,您需要将具体的 DocumentClient class 传递到设置方法中,而不是 IDocumentClient 接口。

public void Setup(DocumentClient client)
{
    await client.CreateDatabaseIfNotExistsAsync(new Database() { Id = databaseId });

    await client.CreateDocumentCollectionIfNotExistsAsync(UriFactory.CreateDatabaseUri(databaseId), new DocumentCollection { Id = "Identity" });
}

执行此操作后,这些方法就可以正常使用了。

虽然依赖性 Injection/IoC 通常更喜欢使用接口而不是具体的 classes,但在这种情况下可能没问题,因为 class 目的专门用于设置和配置数据库:需要对这里的底层技术有一定的了解。