创建if not exists方法不可用

时间:2017-06-27 21:18:00

标签: c# azure .net-core azure-cosmosdb

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

Install-Package Microsoft.Azure.DocumentDB.Client

我正在尝试按照MS提供的here说明,详细说明如何创建数据库和集合。

使用依赖注入,我已注册IDocumentClient。但是,当我尝试在安装程序类中使用它来创建数据库和集合时,以下方法未列为avaialable:

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命名空间,也会发生这种情况。

1 个答案:

答案 0 :(得分:3)

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

通过这种方式,您需要将具体的DocumentClient类传递给setup方法,而不是IDocumentClient接口。

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

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

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

虽然依赖注入/ IoC通常更喜欢在具体类上使用接口,但在这种情况下可能没问题,因为类的目的是专门设置和配置数据库:这里的基础技术的某些知识是可以预料。