EF Core 2.0scaffold-dbcontext 在另一个项目中查找ConnectionString

问题描述 投票:0回答:4

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

如何通过scaffold-dbcontext命令找到另一个项目的appsettings.json文件中的ConnectionString?

entity-framework .net-core ef-core-2.0
4个回答
25
投票

this中所述,您现在可以指定要命名的连接字符串,它看起来像

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;"
}

7
投票

截至本文撰写时,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)为了运行scaffold-dbcontext命令。

这里有一个很好的链接,详细介绍了scaffold-dbcontext命令选项。 另请确保在项目中安装以下软件包,以便在 nuget 包管理器控制台中使用scaffold-dbcontext 命令:

Install-Package Microsoft.EntityFrameworkCore.SqlServer Install-Package Microsoft.EntityFrameworkCore.Tools Install-Package Microsoft.EntityFrameworkCore.Design



3
投票

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



0
投票

示例

项目 DB

:将包含 EFCore 自动生成的类

项目 API

:包含带有连接字符串的 appsettings.json(必须引用 Microsoft.EntityFrameworkCore.Design)

在包管理器控制台中执行

Scaffold-DbContext -Connection“name=

”-Provider Oracle.EntityFrameworkCore -OutputDir EFModels -Context

-Project DB -StartupProject API -Force [如果出现问题,您可以使用 -Verbose 选项进行详细日志记录]

© www.soinside.com 2019 - 2024. All rights reserved.