.net core 如何为现有AzureCosmosDB生成模型类?

.net core 如何为现有AzureCosmosDB生成模型类?,.net-core,azure-cosmosdb,.net Core,Azure Cosmosdb,我有一个现有的Azure CosmosDB,其中包含所有数据和集合。现在,我希望基于与SQLServer数据库相同的过程生成模型类 我使用cmd实用程序导航到包含解决方案文件的文件夹,尝试了以下命令: dotnet ef dbcontext scaffold <Azure CosmosDB ConnectionString> Microsoft.EntityFrameworkCore.Cosmos -o Models dotnet ef dbcontext scaffold Mi

我有一个现有的Azure CosmosDB,其中包含所有数据和集合。现在,我希望基于与SQLServer数据库相同的过程生成模型类

我使用cmd实用程序导航到包含解决方案文件的文件夹,尝试了以下命令:

dotnet ef dbcontext scaffold <Azure CosmosDB ConnectionString> Microsoft.EntityFrameworkCore.Cosmos -o Models
dotnet ef dbcontext scaffold Microsoft.EntityFrameworkCore.Cosmos-o模型
执行上述命令时,我得到以下错误:

System.InvalidOperationException: Unable to find expected assembly attribute named DesignTimeProviderServicesAttribute in provider assembly Microsoft.EntityFrameworkCore.Cosmos. This attribute is required to identify the class which acts as the design-time service provider factory.
   at Microsoft.EntityFrameworkCore.Design.Internal.DesignTimeServicesBuilder.ConfigureProviderServices(String provider, IServiceCollection services, Boolean throwOnError)
   at Microsoft.EntityFrameworkCore.Design.Internal.DesignTimeServicesBuilder.Build(String provider)
   at Microsoft.EntityFrameworkCore.Design.Internal.DatabaseOperations.ScaffoldContext(String provider, String connectionString, String outputDir, String outputContextDir, String dbContextClassName, IEnumerable`1 schemas, IEnumerable`1 tables, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContextImpl(String provider, String connectionString, String outputDir, String outputDbContextDir, String dbContextClassName, IEnumerable`1 schemaFilters, IEnumerable`1 tableFilters, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContext.<>c__DisplayClass0_1.<.ctor>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
Unable to find expected assembly attribute named DesignTimeProviderServicesAttribute in provider assembly Microsoft.EntityFrameworkCore.Cosmos. This attribute is required to identify the class which acts as the design-time service provider factory.
System.InvalidOperationException:在提供程序程序集Microsoft.EntityFrameworkCore.Cosmos中找不到名为DesignTimeProviderServicesAttribute的预期程序集属性。此属性是标识充当设计时服务提供程序工厂的类所必需的。
位于Microsoft.EntityFrameworkCore.Design.Internal.DesignTimeServicesBuilder.ConfigureProviderServices(字符串提供程序、IServiceCollection服务、布尔throwOnError)
位于Microsoft.EntityFrameworkCore.Design.Internal.DesignTimeServicesBuilder.Build(字符串提供程序)
位于Microsoft.EntityFrameworkCore.Design.Internal.DatabaseOperations.ScaffoldContext(字符串提供程序、字符串连接字符串、字符串outputDir、字符串outputContextDir、字符串dbContextClassName、IEnumerable`1模式、IEnumerable`1表、布尔useDataAnnotations、布尔重写文件、布尔useDatabaseNames)
位于Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContextImpl(字符串提供程序、字符串连接字符串、字符串输出目录、字符串输出目录ContextDir、字符串dbContextClassName、IEnumerable`1架构过滤器、IEnumerable`1表格过滤器、布尔useDataAnnotations、布尔重写文件、布尔useDatabaseNames)
在Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContext.c__DisplayClass0_1.b_0()中
在Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.c__DisplayClass3_0`1.b__0()中
位于Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(操作)
在提供程序程序集Microsoft.EntityFrameworkCore.Cosmos中找不到名为DesignTimeProviderServicesAttribute的预期程序集属性。此属性是标识充当设计时服务提供程序工厂的类所必需的。

有人能帮我知道如何解决这个问题吗?

为了让它正常工作,数据库提供程序需要包含有关如何搭建的信息。目前,CosmosDB不支持此功能,因此您将无法使用CLI从现有数据库创建模型


有一种方法可以改进错误消息,使其更加清晰。如果您愿意,您可以在该回购协议上打开一个问题,请求为Cosmos添加该功能。

为了使该功能正常工作,数据库提供商需要包含有关如何搭建的信息。目前,CosmosDB不支持此功能,因此您将无法使用CLI从现有数据库创建模型

有一种方法可以改进错误消息,使其更加清晰。如果您愿意,您可以在该回购协议上打开一个问题,请求为Cosmos添加该功能