我正在使用 EF Core 2.0 CLI 命令scaffold-dbcontext从现有数据库(首先是数据库)对 poco 类进行逆向工程。包含我的带有ConnectionString的 appsettings.json 文件的项目与包含由 scaffold-dbcontext 生成的 poco 类的项目不同。
如何获取支架-dbcontext 命令以在另一个项目的 appsettings.json 文件中找到 ConnectionString?
我正在使用 EF Core 2.0 CLI 命令scaffold-dbcontext从现有数据库(首先是数据库)对 poco 类进行逆向工程。包含我的带有ConnectionString的 appsettings.json 文件的项目与包含由 scaffold-dbcontext 生成的 poco 类的项目不同。
如何获取支架-dbcontext 命令以在另一个项目的 appsettings.json 文件中找到 ConnectionString?
如本文所述,您现在可以指定要命名的连接字符串,如下所示name=MyConnectionString
。您的连接字符串的名称与您在appsettings.json
. 例子:
Scaffold-DbContext -Connection name=MyDB -Provider Microsoft.EntityFrameworkCore.SqlServer
你在哪里appsettings.json
有这样的东西:
"ConnectionStrings": {
"MyDB": Server=mydb.database.windows.net;Database=mydb;Trusted_Connection=True;Encrypt=True;"
}
截至本文发表时,scaffold-dbcontext 命令似乎不支持 appsettings.json 连接字符串查找。换句话说,您必须使用 scaffold-dbcontext cli 语法显式键入完整的连接字符串:
Scaffold-DbContext -Connection "Server=(localdb)\ProjectsV13;Database=MyDbName;Trusted_Connection=True;" -Provider Microsoft.EntityFrameworkCore.SqlServer -OutputDir Model -Context "MyDbContextName" -DataAnnotations -Force -Project MyEntitiesProject -StartupProject MyEntitiesProject
与 OP 没有直接关系,但作为明智的说法......使用该StartupProject
选项很有帮助,因此您不必将 Visual Studio 中的启动项目切换到您的实体项目(例如,MyEntitiesProject)以运行脚手架-dbcontext 命令。
这里有一个很好的链接,详细介绍了脚手架 dbcontext 命令选项。
还要确保在项目中安装了以下包,以便在 nuget 包管理器控制台中使用 scaffold-dbcontext 命令:
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Tools
Install-Package Microsoft.EntityFrameworkCore.Design
对我来说,这两个答案都很有用。我想在另一个项目中生成上下文,所以需要指定启动项目并选择我必须生成上下文的项目。所以我使用:
Scaffold-DbContext -Connection name=DefaultConnectionString -OutputDir DataModel -StartupProject NameofTheProject.API Microsoft.EntityFrameworkCore.SqlServer
可以通过使用 Scaffold-DbContext 中的 -StartupProject 选项并使启动项目引用 Microsoft.EntityFrameworkCore.Design 包来完成(仅警告)。
例子
Project DB:将包含 EFCore 自动生成的类
项目 API:包含带有连接字符串的 appsettings.json(必须参考 Microsoft.EntityFrameworkCore.Design)
在包管理器控制台中执行
Scaffold-DbContext -Connection "name=<connection string name>" -Provider Oracle.EntityFrameworkCore -OutputDir EFModels -Context <DbContext 类名> -Project DB -StartupProject API -Force
[如果出现问题,您可以使用 -Verbose 选项进行详细日志记录]