Visual Studio 2017中ASP.NET Core无需命令行的EF上下文生成与脚手架问询
嘿,这个问题我刚好折腾过,给你详细拆解下:
ASP.NET Core + VS2017 数据库脚手架全攻略
1. 不用命令行,纯IDE就能生成DbContext!
VS2017完全支持图形化操作生成EF Core的DbContext和实体类,不用非得开Package Manager Console或者敲dotnet命令。步骤很简单:
- 右键你的ASP.NET Core项目 → 选Add → New Scaffolded Item
- 在弹出的窗口里,找到Data分类下的EF Core DbContext from Database(不同版本可能名字略有差异,但核心就是从现有数据库生成DbContext)
- 点Add后会进入配置界面:
- 可以直接选择已有的数据库连接,或者新建一个连接
- 勾选你想要生成实体的表
- 设置DbContext的名称和存放路径
- 还能选要不要给实体类加注释、是否生成Fluent API配置等
跟着向导走下来,DbContext和对应实体类就自动生成了,全程不用碰命令行。
2. 命令行不是必须的!
真的不用纠结命令行,刚才说的可视化脚手架是官方原生支持的,底层和Scaffold-DbContext命令是一套逻辑,只是换了个图形化界面。如果你更习惯点鼠标操作,完全可以用这种方式替代命令行。
3. 当然可以在appsettings.json里放连接字符串!
这不仅可以,还是ASP.NET Core推荐的最佳实践呢。
- 先在appsettings.json里配置:
"ConnectionStrings": { "MyBlogDb": "Server=localhost;Database=MyBlog;Trusted_Connection=True;MultipleActiveResultSets=true" }
- 用IDE脚手架的时候,在配置连接的步骤里,能看到“从appsettings.json中使用连接字符串”的选项,直接选你定义的键名就行;如果用命令行的话,也可以指定读取配置:
Scaffold-DbContext Name=ConnectionStrings:MyBlogDb Microsoft.EntityFrameworkCore.SqlServer
- 后续注册DbContext的时候,也能直接从配置里读取,比如在Program.cs(.NET 6+)里:
builder.Services.AddDbContext<BlogDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("MyBlogDb")));
最后补个小提示:如果右键找不到脚手架选项,大概率是项目缺了必要的NuGet包,比如Microsoft.EntityFrameworkCore.Tools和对应数据库的驱动(比如SqlServer的话就是Microsoft.EntityFrameworkCore.SqlServer),先装上这些包再试,就能看到对应的选项了。
内容的提问来源于stack exchange,提问作者johnny




