Anishow 的 ASP.NET API

Anishow 是一个用来学习 ASP.NET,EntityFramework 和 SwiftUI 的项目

这篇文章主要侧重于后端部分

为了可以让 Entity Framework 可以根据表自动建立数据库上下文,需要先设置 MySQL Connection String

appsettings.json 中加入

1
2
3
"ConnectionStrings": {
"Anishow": "server=localhost;database=DATABASE_NAME;uid=USER_NAME;pwd=PASSWORD"
}

Anishow 的 Key 可以自行修改,Connection String 里的 Database Name,Username,Password 需要自行修改

然后前往 Nuget 下载以下依赖:

  • Microsoft.EntityFrameworkcore.Design
  • Pomelo.EntityFrameworkCore.Mysql

通过 dotnet tool install --global dotnet-ef 全局安装 dotnet ef 命令行工具

安装完成后使用 dotnet ef 测试是否可用

如果可用,可以开始执行下面命令让 Entity Framework 根据数据表建模,并且自动构建数据库上下文

1
dotnet ef dbcontext scaffold Name=Anishow Pomelo.EntityFrameworkCore.MySql --output-dir Models --context-dir Data --namespace AniShow.Models --context-namespace AniShow.Data --context AniShowContext -f --no-onconfiguring

Name 中的 Anishow 需要跟 Connection String 同名,其他的配置诸如输出文件夹名字,命名空间都可以自行设置

当看到如下输出的时候代表数据表建模和数据库上下文生成已经成功

1
2
3
Build started...
Build succeeded.
Using ServerVersion '8.0.28-mysql'.

Using ServerVersion 需要复制下来,然后到 Program.cs 添加数据库上下文

来到 Program.cs,在有 builder 的区域随便找个地方添加

1
2
3
4
5
6
// Database Context
builder.Services.AddDbContext<AniShowContext>(options =>
{
options.UseMySql(builder.Configuration.GetConnectionString("AniShow"),
ServerVersion.Parse("8.0.28-mysql"));
});

ServerVersion.Parse 的参数填写输出的 ServerVersion

当这些配置完毕之后,就可以舒服的使用数据库上下文了

如果你是使用 Visual Studio 来写,可以右键 Controller 文件夹,添加选择控制器,然后使用 Entity Framework 的控制器让 Visual Studio 自动生成可以使用数据库上下文进行增删改查的 API Controller

如果是使用 Rider,可以右键 Controller 文件夹,Add 选择 New Scaffolded Item 后选择 API Controller with views, using Entity Framework

然后就能生成出一个带有增删改查的重 API Controller

image.png