EF Core 2.0 scaffold-dbcontext在另一个项目

时间:2017-10-04 19:01:02

标签: entity-framework .net-core ef-core-2.0

我使用EF Core 2.0 CLI命令 scaffold-dbcontext 从现有数据库(数据库优先)反向设计poco类。包含带有 ConnectionString 的appsettings.json文件的项目与包含scaffold-dbcontext生成的poco类的项目不同。

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

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

截至本文发表时,并未显示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中的启动项目切换到您的实体project(例如,MyEntitiesProject)以运行scaffold-dbcontext命令。

有一个很好的链接,详细说明了scaffold-dbcontext命令选项here

还要确保在项目中安装了以下软件包,以便在nuget软件包管理器控制台中使用scaffold-dbcontext命令:

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

可以通过在 Scaffold-DbContext 中使用 -StartupProject 选项并使启动项目引用 Microsoft.EntityFrameworkCore.Design 包(仅警告)来完成。

示例

Project DB:将包含 EFCore 自动生成的类

项目 API:包含带有连接字符串的 appsettings.json(必须参考 Microsoft.EntityFrameworkCore.Design)

在包管理器控制台中执行

Scaffold-DbContext -Connection "name=" -Provider Oracle.EntityFrameworkCore -OutputDir EFModels -Context -Project DB -StartupProject API -Force

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