前言

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

创建控制器

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





依赖注入

将上下文类注入到UsersController中,ASP.NET Core 支持依赖关系注入 (DI) 软件设计模式,这是一种在类及其依赖关系之间实现控制反转 (IoC) 的技术。有三种具体实现方式,我们这里用到的是构造函数注入,关于这块的内容,以后我们也可以专门出一期。直接上代码。

		private readonly MyDataBaseContext_mian _dbmain;
private readonly MyDataBaseContext_from _dbfrom;
public UsersController(MyDataBaseContext_mian dbmain, MyDataBaseContext_from dbfrom)
{
_dbmain = dbmain;
_dbfrom = dbfrom;
}

CRUD基本代码

一下内容是UsersController的完整内容

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using test.Models;
using test.MyDataBaseContext; namespace test.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class UsersController : Controller
{
private readonly MyDataBaseContext_mian _dbmain;
private readonly MyDataBaseContext_from _dbfrom;
public UsersController(MyDataBaseContext_mian dbmain, MyDataBaseContext_from dbfrom)
{
_dbmain = dbmain;
_dbfrom = dbfrom;
}
[HttpGet]
// GET: UsersController
public IEnumerable<User> Index()
{
return _dbfrom.Users.ToList();
} [HttpGet("{id}")]
// GET: UsersController/Details/5
public async Task<IActionResult> Details(int? id)
{
return CreatedAtAction(nameof(Index), await _dbfrom.Users.AsNoTracking().FirstOrDefaultAsync(m => m.UserId == id));
} // POST: UsersController/Create
[HttpPost]
public async Task<IActionResult> Create(User user)
{
_dbmain.Users.Add(user);
await _dbmain.SaveChangesAsync();
return CreatedAtAction(nameof(Index), new { id = user.UserId }, user);
} // POST: UsersController/Edit/5
[HttpPut("{id}")]
public async Task<bool> Edit(int? id, [FromBody] User user)
{
_dbmain.Set<User>().Update(user);
return await _dbmain.SaveChangesAsync() > 0;
} // POST: UsersController/Delete/5
[HttpDelete("{id}")]
public async Task<IActionResult> Delete(int id)
{ User user = new User(); user = await _dbmain.Users.FindAsync(id);
if (user == null)
{
return RedirectToAction(nameof(Index));
}
try
{
_dbmain.Users.Remove(user);
await _dbmain.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
catch (DbUpdateException /* ex */)
{
//Log the error (uncomment ex variable name and write a log.)
return RedirectToAction(nameof(Index), new { id = id, saveChangesError = true });
} }
}
}

注:我对方法进行的改造,采用官网提供的新写法,有兴趣的小伙伴可以看看官网。

swagger接口测试文档看效果

向主库添加用户信息



从库查询用户信息

从库查询详细信息



主库修改用户信息

再从从库查询用户信息

删除用户信息





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

EF Core + MySQL 基本增删改查的更多相关文章

  1. asp.net core webapi 使用ef 对mysql进行增删改查,并生成Docker镜像构建容器运行

    1.构建运行mysql容器,添加数据库user 参考Docker创建运行多个mysql容器,地址 http://www.cnblogs.com/heyangyi/p/9288402.html 添加us ...

  2. Java连接MySQL数据库增删改查通用方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...

  3. MySQL数据库(增删改查语句)

    MySQL数据库(增删改查语句)一.登录数据库:---->  mysql -uroot -proot;(对应用户名和密码)二.SQL语句:    数据定义语言DDL  用来定义数据库.表.列,关 ...

  4. python操作mysql数据库增删改查的dbutils实例

    python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...

  5. Asp.Net操作MySql数据库增删改查

    Asp.Net操作MySql数据库增删改查,话不多说直接步入正题.git源码地址:https://git.oschina.net/gxiaopan/NetMySql.git  1.安装MySQL数据库 ...

  6. Mysql 的 增删改查

    mysql的增删改查 1:新建数据库 create database 数据库名 [其他选项]; 2:新建数据表 create table students ( id int unsigned not ...

  7. MySQL之增删改查之

    MySQL之增删改查   前言:以下是MySQL最基本的增删改查语句,很多IT工作者都必须要会的命令,也是IT行业面试最常考的知识点,由于是入门级基础命令,所有所有操作都建立在单表上,未涉及多表操作. ...

  8. MySql之增删改查 · YbWork's Studio

    前提:在进行"增删改查"的操作之前,先建立一个包含数据表student的数据库(具体操作可以见MySQL之最基本命令): 1."增"--添加数据 1.1 为表中 ...

  9. 使用MySQL练习增删改查时因为版本问题出现连接错误

    使用MySQL练习增删改查时出现连接错误,错误提示如下: 2020-02-19 19:53:51.088 ERROR 16328 --- [reate-249798694] com.alibaba.d ...

  10. koa+mysql实现增删改查-全栈之路(001)

    Date: 2020-4-23 以前很少写文章,从今天开始我要挑战一下自己,连续输出100篇技术类文章.这100篇文章我尽量以实战案例为主. 如果你觉得本文还不错,记得关注或者给个 star,你们的赞 ...

随机推荐

  1. Linux配置为代理服务器,代理微信

    1.安装squid(全程使用root账号,如使用其他请注意权限问题) yum install squid 2.生成代理的账号密码 #如果没有htpasswd命令 先安装sudo yum install ...

  2. 随机服务系统模拟—R实现(二)

    M/M/1随机服务系统的模拟 M/M/1模型是一种出生-死亡过程,此随机过程中的每一个状态代表模型中人数的数目.因为模型的队列长度无限且参与人数亦无限,故此状态数目亦为无限.例如状态0表示模型闲置.状 ...

  3. [Windows/CMD]不重启设置/刷新环境变量

    1 文由 当我已经通过如下路径设置了Maven的环境(maven-3.5.4). "我的电脑"->"属性"->"高级"-> ...

  4. .Net Core后端架构实战【2-实现动态路由与Dynamic API】

    摘要:基于.NET Core 7.0WebApi后端架构实战[2-实现动态路由与Dynamic API]  2023/02/22, ASP.NET Core 7.0, VS2022 引言 使用过ABP ...

  5. python:模拟购票的小程序

    问题描述:小白学习python的第N天,继续练习.做一个模拟购票的小程序,没有用数据库和文件来存储数据,只是能够单词选择. # hzh 每天进步一点点 # 2022/5/13 17:24 import ...

  6. android studio 做登陆界面

    先来一个最简单的     AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> &l ...

  7. OI 数论中的上界估计与时间复杂度证明

    预备 0.1 渐进符号 其实不少高等数学 / 数学分析教材在讲解无穷小的比较时已经相当严谨地介绍过大 O.小 O 记号,然而各种历史习惯记法的符号滥用(abuse of notation)[1] 直到 ...

  8. ts中报错信息收集

    1. 错误代码 参考:https://www.mmbyte.com/article/92849.html 1 state.localuserInfo = JSON.parse(localStorage ...

  9. Marior去除边距和迭代内容矫正用于自然文档矫正

    一.简要介绍 本文简要介绍了论文" Marior: Margin Removal and Iterative Content Rectification for Document Dewar ...

  10. 关于java中的equal

    正常情况下的equal方法是比较两者之间的id.如果需要它实现其他的问题,可以通过重写这个方法.idea自带了重写equal的快捷方式.右键生成中的equals() 和 hashCode()就可以帮助 ...