8

我正在使用 EF Core 2.0 CLI 命令scaffold-dbcontext从现有数据库(首先是数据库)对 poco 类进行逆向工程。包含我的带有ConnectionString的 appsettings.json 文件的项目与包含由 scaffold-dbcontext 生成的 poco 类的项目不同。

如何获取支架-dbcontext 命令以在另一个项目的 appsettings.json 文件中找到 ConnectionString?

4

4 回答 4

21

本文所述,您现在可以指定要命名的连接字符串,如下所示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;"
}
于 2018-08-24T00:13:00.960 回答
6

截至本文发表时,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
于 2017-10-09T01:04:10.167 回答
2

对我来说,这两个答案都很有用。我想在另一个项目中生成上下文,所以需要指定启动项目并选择我必须生成上下文的项目。所以我使用:

Scaffold-DbContext -Connection name=DefaultConnectionString -OutputDir DataModel -StartupProject NameofTheProject.API Microsoft.EntityFrameworkCore.SqlServer

于 2021-05-19T07:22:59.843 回答
0

可以通过使用 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 选项进行详细日志记录]

于 2021-02-18T11:53:38.500 回答