文章目录

  准备MySql数据库

  先准备好一个mysql数据库(我这里准备的是test数据库,里面又准备了两张表,其中book表中只有两个字段,Id(bigint类型)和 Name(varchar类型))

  使用Microsoft.EntityFrameworkCore.Design自动生成实体类

  使用VS新建一个asp.net core web api项目(我这里使用的框架是.net5.0的,确保版本对应很重要)

  打开终端

  在这里插入图片描述

  进到项目所在目录(我这里解决方案名为DBTest,项目名也为DBTest,所以要进入到DBTest\DBTest下而不是DBTest下)

  安装工具

   dotnet tool install --global dotnet-ef

  在项目上安装包 Microsoft.EntityFrameworkCore.Design

   dotnet add package Microsoft.EntityFrameworkCore.Design -v 5.0.13

  可以运行以下命令以验证是否正确安装了 EF Core CLI 工具

  dotnet ef

  出现了下列输出则表示EF Core CLI安装成功

  在这里插入图片描述

  至此EF Core CLI工具算是准备好了,之后还要安装MySql相关包

  安装Pomelo.EntityFrameworkCore.MySql包

   dotnet add package Pomelo.EntityFrameworkCore.MySql -v 5.0.3

  使用EF Core CLI生成实体类(确保数据库连接字符串正确)

   dotnet ef dbcontext scaffold "server=localhost;userid=root;pwd=root;port=3306;database=test;sslmode=none;" Pomelo.EntityFrameworkCore.MySql -o Repository -f

  其中-o用于指定输出路径

  -f表示出现同名文件时覆盖原文件

  出现Build Success就表示成功了

  此时你会发现项目中多了一个Repository文件夹,里面有一个数据库上下文的类和一些实体类,这些实体类实际上就是对应了数据库的表

  在这里插入图片描述

  .net 连接 MySql数据库

  在appsetting.json配置文件中加入连接字符串

   "ConnectionStrings": {

      "MySQL":"server=localhost;user id=root;password=root;port=3306;database=test"
    }

  在这里插入图片描述

  注册服务进容器

   services.AddDbContext(options => options.UseMySql(Configuration.GetConnectionString("MySQL"), ServerVersion.AutoDetect(Configuration.GetConnectionString("MySQL"))));

  OK,连接 MySql数据库完成

  使用EFCore操作数据库

  现在在需要操作数据库的地方注入服务即可

  例如在WeatherForecastController.cs中

  在这里插入图片描述

  再写一个Action来测试操作数据库

  例如在book表中创建一条数据

   [HttpGet("/CreateBook")]

    public async Task CreateBookAsync()
    {
        var book = await _context.Books.AddAsync(new Book
        {
            Id = 123L,
            Name = "《ASP.NET Core框架揭秘》"
        });
        await _context.SaveChangesAsync();
        return book.Entity;
    }

  运行项目,访问相关CreateBookAsync接口

  访问完毕后,查看数据库发现book表中多了一条数据

  大功告成

  附上一些数据库的其他操作

  查询与修改:

   [HttpGet("/UpdateBook")]

    public async Task UpdateBookAsync()
    {
        //根据id查询
        var book = await _context.Books.FindAsync(123L);
        //修改
        book.Name = "《Hello World》";
        //保存修改
        return await _context.SaveChangesAsync();
    }

  查询与删除:

   [HttpGet("/DeleteBook")]

    public async Task DeleteBookAsync()
    {
        //根据条件查询单条数据
        var book = _context.Books.FirstOrDefault(book => book.Name == "《Hello World》");
        //在DBContext中删除数据
        _context.Books.Remove(book);
        //将删除操作同步到数据库中
        return await _context.SaveChangesAsync();
    }

最后修改:2024 年 07 月 21 日
如果觉得我的文章对你有用,请随意赞赏