我有一个.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
命名空间,也会发生这种情况。
答案 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通常更喜欢在具体类上使用接口,但在这种情况下可能没问题,因为类的目的是专门设置和配置数据库:这里的基础技术的某些知识是可以预料。