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 目的专门用于设置和配置数据库:需要对这里的底层技术有一定的了解。
我有一个 .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 目的专门用于设置和配置数据库:需要对这里的底层技术有一定的了解。