翼度科技»论坛 编程开发 .net 查看内容

EF Core + MySQL 基本增删改查

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
前言

基于EF Core + MySQL的基本增删改查,示例是基于.NET6 + EF Core + MySQL 创建实体和数据库、EFCore 数据迁移项目基础上的内容增加。同时也是对基于Canal实现MySQL 8.0 数据库数据同步项目的验证。
创建控制器

Controllers---->添加---->控制器,选择api---->包含读写操作的API控制器。



依赖注入

将上下文类注入到UsersController中,ASP.NET Core 支持依赖关系注入 (DI) 软件设计模式,这是一种在类及其依赖关系之间实现控制反转 (IoC) 的技术。有三种具体实现方式,我们这里用到的是构造函数注入,关于这块的内容,以后我们也可以专门出一期。直接上代码。
  1.                 private readonly MyDataBaseContext_mian _dbmain;
  2.         private readonly MyDataBaseContext_from _dbfrom;
  3.         public UsersController(MyDataBaseContext_mian dbmain, MyDataBaseContext_from dbfrom)
  4.         {
  5.             _dbmain = dbmain;
  6.             _dbfrom = dbfrom;
  7.         }
复制代码
CRUD基本代码

一下内容是UsersController的完整内容
  1. using Microsoft.AspNetCore.Http;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.EntityFrameworkCore;
  4. using test.Models;
  5. using test.MyDataBaseContext;
  6. namespace test.Controllers
  7. {
  8.     [ApiController]
  9.     [Route("api/[controller]")]
  10.     public class UsersController : Controller
  11.     {
  12.         private readonly MyDataBaseContext_mian _dbmain;
  13.         private readonly MyDataBaseContext_from _dbfrom;
  14.         public UsersController(MyDataBaseContext_mian dbmain, MyDataBaseContext_from dbfrom)
  15.         {
  16.             _dbmain = dbmain;
  17.             _dbfrom = dbfrom;
  18.         }
  19.         [HttpGet]
  20.         // GET: UsersController
  21.         public IEnumerable<User> Index()
  22.         {
  23.             return _dbfrom.Users.ToList();
  24.         }
  25.         [HttpGet("{id}")]
  26.         // GET: UsersController/Details/5
  27.         public async Task<IActionResult> Details(int? id)
  28.         {
  29.             return CreatedAtAction(nameof(Index), await _dbfrom.Users.AsNoTracking().FirstOrDefaultAsync(m => m.UserId == id));
  30.         }
  31.         // POST: UsersController/Create
  32.         [HttpPost]
  33.         public async Task<IActionResult> Create(User user)
  34.         {
  35.             _dbmain.Users.Add(user);
  36.             await _dbmain.SaveChangesAsync();
  37.             return CreatedAtAction(nameof(Index), new { id = user.UserId }, user);
  38.         }
  39.        // POST: UsersController/Edit/5
  40.         [HttpPut("{id}")]
  41.         public async Task<bool> Edit(int? id, [FromBody] User user)
  42.         {
  43.             _dbmain.Set<User>().Update(user);
  44.             return await _dbmain.SaveChangesAsync() > 0;
  45.         }
  46.         // POST: UsersController/Delete/5
  47.         [HttpDelete("{id}")]
  48.         public async Task<IActionResult> Delete(int id)
  49.         {
  50.             User user = new User();
  51.             user = await _dbmain.Users.FindAsync(id);
  52.             if (user == null)
  53.             {
  54.                 return RedirectToAction(nameof(Index));
  55.             }
  56.             try
  57.             {
  58.                 _dbmain.Users.Remove(user);
  59.                 await _dbmain.SaveChangesAsync();
  60.                 return RedirectToAction(nameof(Index));
  61.             }
  62.             catch (DbUpdateException /* ex */)
  63.             {
  64.                 //Log the error (uncomment ex variable name and write a log.)
  65.                 return RedirectToAction(nameof(Index), new { id = id, saveChangesError = true });
  66.             }
  67.         }
  68.     }
  69. }
复制代码
注:我对方法进行的改造,采用官网提供的新写法,有兴趣的小伙伴可以看看官网。
swagger接口测试文档看效果

向主库添加用户信息



从库查询用户信息


从库查询详细信息



主库修改用户信息


再从从库查询用户信息


删除用户信息



到此,EFCore的增删改查就完事了。有不懂的小伙伴可以把问题打在评论区,我来为大家解答。

来源:https://www.cnblogs.com/lym003/archive/2023/06/09/17467099.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具