.NET框架 - NETCORE + API + EF(DBFirst) + MYSQL
.NET框架 - NET6 + API + EF(DBFirst) + MYSQL
1. 创建项目,NETCORE.EF.DBFirst
2. 添加依赖,注意版本应与 NETCORE 框架版本一致
Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.Tools
Pomelo.EntityFrameworkCore.MySql
3. 生成实体类
使用:Scaffold-DbContext
命令,参考:https://learn.microsoft.com/zh-cn/ef/core/cli/powershell#common-parameters
参数说明如下表所示:
名称 | 含义 |
---|---|
-Connection | 指定数据库的连接字符串 |
-Provider | 指定要使用的提供程序。例如Microsoft.EntityFrameworkCore.SqlServer |
-OutputDir | 指定用于输出类的目录。如果省略,则使用顶级项目目录 |
-ContextDir | 指定存放DbContext的目录 |
-Context | 指定生成的DbContext类的名称 |
-Schemas | 指定要为其生成类的模式 |
-Tables | 指定要为其生成类的表 |
-DataAnnotations | 使用DataAnnotation属性在可能的情况下配置模型 |
-Force | 强制脚手架覆盖现有文件 |
-Project | 指定实体类和数据库上下文存放在的项目名称 |
-StartupProject | 指定启动项目名称 |
-UseDatabaseNames | 使用与数据库中显示的名称完全相同的表、视图、序列和列名称。 如果省略此参数,数据库名称将更改为更符合 C# 名称样式约定。 |
打开【工具、Nuget包管理器、程序包管理器控制台】,选择默认项目为当前项目
Scaffold-DbContext -Connection "server=localhost;userid=root;password=root;database=RailAssist;" -Provider Pomelo.EntityFrameworkCore.MySql -OutputDir Models -ContextDir Context -Context DataBaseAssist -UseDatabaseNames
后续如数据库新增或删减表,在命令后加-Force
Scaffold-DbContext -Connection "server=localhost;userid=root;password=root;database=RailAssist;" -Provider Pomelo.EntityFrameworkCore.MySql -OutputDir Models -ContextDir Context -Context DataBaseAssist -UseDatabaseNames -Force
4. 配置文件,appsettings.json
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "ConnectionStrings": { "MysqlConnection": "server=localhost;userid=root;password=root;database=RailAssist" } }
5. 在Program类中添加数据上下文对象依赖注入服务
builder.Services.AddControllers(); // Scaffold-DbContext 'server=localhost;userid=root;password=root;database=large;' Pomelo.EntityFrameworkCore.MySql -OutputDir Models -Context DBContext // Scaffold-DbContext 'server=localhost;userid=root;password=root;database=large;' Pomelo.EntityFrameworkCore.MySql -OutputDir Models -Context DBContext -Force builder.Services.AddDbContext<DBContext>(options => options.UseMySql(builder.Configuration.GetConnectionString("MysqlConnection"), new MySqlServerVersion(new Version(8, 0, 11))));
6. 增加控制器 测试
[Route("api/[controller]")] [ApiController] public class ValuesController : ControllerBase { private readonly DBContext DB; public ValuesController(DBContext db) { DB = db; } [HttpGet] public async Task<IActionResult> Get() { var con = await DB.AlogUserfiles.CountAsync(); return Ok(con); } }
引用:https://blog.csdn.net/Anoxia_li/article/details/125180997
引用:https://blog.csdn.net/HerryDong/article/details/128091994