【.Net Core】 (爬坑).Net Core 3.1 webapi 集成EF 用 code first 操作MySql数据库

之前一直用.Net Core 2.1 ,发现3.1后有很多地方和原来的操作不同,踩了一些坑,所以记录一下3.1的操作方法

1.开发环境

  .Net Core 3.1     

  MySql : 5.7.32

 

2.创建webapi项目

【.Net Core】 (爬坑).Net Core 3.1 webapi 集成EF 用 code first 操作MySql数据库

 

 

3.查看项目结构,新建ValuesController ,运行项目,打开浏览器访问项目地址 XXX/api/Values

【.Net Core】 (爬坑).Net Core 3.1 webapi 集成EF 用 code first 操作MySql数据库

    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        [HttpGet]
        public string Get()
        {
            return "value";
        }
    }

【.Net Core】 (爬坑).Net Core 3.1 webapi 集成EF 用 code first 操作MySql数据库

 

4.集成EntityFramework,打开Nuget,安装EntityFramework的包 

下载如下包:

Pomelo.EntityFrameworkCore.MySql      此包用于集成EF,进行增删改查等操作

Microsoft.EntityFrameworkCore.Tools     此包是EF工具包,没有不可以使用数据迁移更新数据库

P.S : MySql.Data.XXX   等Mysql官方包不可用 最新版8.0.22 目前不支持.Net Core 3.1,安装后不可用 。

【.Net Core】 (爬坑).Net Core 3.1 webapi 集成EF 用 code first 操作MySql数据库

appsetting.json文件添加数据库连接

"ConnectionStrings": {
    "conn": "Data Source=localhost;Database=test;User ID=root;Password=sima1234;port=3306;sslmode=none;"
 },

添加数据库DbContext类

public class MyDbContext : DbContext
{
    public MyDbContext(DbContextOptions<MyDbContext> options) : base(options)
    {
    }
    public DbSet<User> users { get; set; }
}    

打开startup.cs,把db对象注入一下,方便Controller层使用,再改造一下Controller,把路径改成自定义。

services.AddScoped<DbContext, MyDbContext>();   //注入一下db对象
services.AddDbContext<MyDbContext>(options => options.UseMySql(Configuration.GetConnectionString("conn")));

 

5.打开程序包管理控制台,使用Code First创建数据库

 【.Net Core】 (爬坑).Net Core 3.1 webapi 集成EF 用 code first 操作MySql数据库

add-Migration init    \\ init是名字 随便自己取名字  如果有错可以用 Remove-Migration 回退
update-database \\ 上一步成功后更新数据库

生成的Migration迁移文件

【.Net Core】 (爬坑).Net Core 3.1 webapi 集成EF 用 code first 操作MySql数据库

【.Net Core】 (爬坑).Net Core 3.1 webapi 集成EF 用 code first 操作MySql数据库 

打开数据库查看,user成功创建,另外那张表是ef数据迁移版本记录表

【.Net Core】 (爬坑).Net Core 3.1 webapi 集成EF 用 code first 操作MySql数据库

 

6.修改Controller层代码,自定义访问路径

    [Route("/[controller]/[action]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        private DbContext _db;
        public ValuesController(MyDbContext db)
        {
            this._db = db;
        }

        [HttpGet]
        public async Task<string> Add()
        {
            User user = new User();
            user.Username = "admin";
            user.Password = "123456";
            _db.Set<User>().Add(user);
            _db.SaveChanges();
            return "value";
        }
    }

运行结果,注意!访问地址已经为自己定义的了。

【.Net Core】 (爬坑).Net Core 3.1 webapi 集成EF 用 code first 操作MySql数据库

 

 

 【.Net Core】 (爬坑).Net Core 3.1 webapi 集成EF 用 code first 操作MySql数据库

 

【.Net Core】 (爬坑).Net Core 3.1 webapi 集成EF 用 code first 操作MySql数据库

上一篇:AngularJS+Node.js+socket.io 开发在线聊天室


下一篇:Redis持久化之RDB与AOF