C# 如果不存在则创建方法不可用
我有一个.Net核心应用程序,我已将cosmos nuget软件包安装到:C# 如果不存在则创建方法不可用,c#,azure,.net-core,azure-cosmosdb,C#,Azure,.net Core,Azure Cosmosdb,我有一个.Net核心应用程序,我已将cosmos nuget软件包安装到: Install-Package Microsoft.Azure.DocumentDB.Client 我正试图按照MS给出的说明进行操作,详细说明如何创建数据库和集合 使用依赖注入,我注册了IDocumentClient。但是,当我尝试在安装类中使用此方法创建数据库和集合时,以下方法不可用: public void Setup(IDocumentClient client) { await client.Crea
Install-Package Microsoft.Azure.DocumentDB.Client
我正试图按照MS给出的说明进行操作,详细说明如何创建数据库和集合
使用依赖注入,我注册了IDocumentClient
。但是,当我尝试在安装类中使用此方法创建数据库和集合时,以下方法不可用:
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
类中,但它们实际上不是IDocumentClient
接口的一部分
public void Setup(DocumentClient client)
{
await client.CreateDatabaseIfNotExistsAsync(new Database() { Id = databaseId });
await client.CreateDocumentCollectionIfNotExistsAsync(UriFactory.CreateDatabaseUri(databaseId), new DocumentCollection { Id = "Identity" });
}
通过这种方式,您需要将具体的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通常更喜欢使用接口而不是具体的类,但在这种情况下可能是可以的,因为类的目的是专门设置和配置数据库:这里需要对底层技术有一定的了解“虽然依赖注入/IoC通常更喜欢使用接口而不是具体的类,但在这种情况下,它可能还可以……”尽管它肯定不会使测试更容易(◔_◔)