EF Core数据库优先如何指定Scaffold-DbContext输出到指定类库
解决方案
Scaffold-DbContext默认将生成文件输出到包管理器控制台(PMC)当前选中的默认项目,你当前默认项目选中的是ManageEmployee.Web,所以文件生成到了Web项目中。要将文件输出到ManageEmployee.Management类库,按以下步骤操作:
- 第一步:安装依赖
给ManageEmployee.Management类库安装两个必需的NuGet包:Microsoft.EntityFrameworkCore.SqlServerMicrosoft.EntityFrameworkCore.Tools
两个包的版本要和你Web项目中使用的EF Core版本保持一致,避免版本冲突。
- 第二步:执行脚手架命令
两种操作方式二选一即可:- 切换默认项目执行
打开包管理器控制台,将顶部的「默认项目」下拉选项切换为ManageEmployee.Management,保持解决方案启动项目为ManageEmployee.Web,直接执行原有命令即可:
Scaffold-DbContext -Connection "Server=MCH-DESKTOP\SQLEXPRESS; Database=AutoSoftSystems; Trusted_Connection=True; MultipleActiveResultSets=true;" -Provider Microsoft.EntityFrameworkCore.SqlServer -OutputDir "Models" -ContextDir "Data" -Context "EmployeeDbContext"- 加参数指定目标项目,无需切换默认项目
如果不想修改PMC默认项目,直接在原命令中添加-Project和-StartupProject参数即可:
Scaffold-DbContext -Connection "Server=MCH-DESKTOP\SQLEXPRESS; Database=AutoSoftSystems; Trusted_Connection=True; MultipleActiveResultSets=true;" -Provider Microsoft.EntityFrameworkCore.SqlServer -Project "ManageEmployee.Management" -StartupProject "ManageEmployee.Web" -OutputDir "Models" -ContextDir "Data" -Context "EmployeeDbContext" - 切换默认项目执行
- 参数说明
-Project:指定实体类、DbContext的输出项目,此处填类库项目名即可-StartupProject:指定EF工具运行时使用的启动项目,选择可正常运行的Web项目即可,避免类库无法独立启动导致工具运行报错-OutputDir、-ContextDir的路径是相对于-Project指定项目的根目录解析的,执行后会自动在类库项目下创建对应文件夹存放生成文件。
- 补充:后续如果需要重新生成覆盖已有文件,在命令末尾加
-Force参数即可。
内容的提问来源于stack exchange,提问作者Mizanur Rahaman
相关产品推荐
相关产品推荐

