EF Core + MySQL 基本增删改查
前言
基于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 基本增删改查的更多相关文章
- asp.net core webapi 使用ef 对mysql进行增删改查,并生成Docker镜像构建容器运行
1.构建运行mysql容器,添加数据库user 参考Docker创建运行多个mysql容器,地址 http://www.cnblogs.com/heyangyi/p/9288402.html 添加us ...
- Java连接MySQL数据库增删改查通用方法
版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...
- MySQL数据库(增删改查语句)
MySQL数据库(增删改查语句)一.登录数据库:----> mysql -uroot -proot;(对应用户名和密码)二.SQL语句: 数据定义语言DDL 用来定义数据库.表.列,关 ...
- python操作mysql数据库增删改查的dbutils实例
python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...
- Asp.Net操作MySql数据库增删改查
Asp.Net操作MySql数据库增删改查,话不多说直接步入正题.git源码地址:https://git.oschina.net/gxiaopan/NetMySql.git 1.安装MySQL数据库 ...
- Mysql 的 增删改查
mysql的增删改查 1:新建数据库 create database 数据库名 [其他选项]; 2:新建数据表 create table students ( id int unsigned not ...
- MySQL之增删改查之
MySQL之增删改查 前言:以下是MySQL最基本的增删改查语句,很多IT工作者都必须要会的命令,也是IT行业面试最常考的知识点,由于是入门级基础命令,所有所有操作都建立在单表上,未涉及多表操作. ...
- MySql之增删改查 · YbWork's Studio
前提:在进行"增删改查"的操作之前,先建立一个包含数据表student的数据库(具体操作可以见MySQL之最基本命令): 1."增"--添加数据 1.1 为表中 ...
- 使用MySQL练习增删改查时因为版本问题出现连接错误
使用MySQL练习增删改查时出现连接错误,错误提示如下: 2020-02-19 19:53:51.088 ERROR 16328 --- [reate-249798694] com.alibaba.d ...
- koa+mysql实现增删改查-全栈之路(001)
Date: 2020-4-23 以前很少写文章,从今天开始我要挑战一下自己,连续输出100篇技术类文章.这100篇文章我尽量以实战案例为主. 如果你觉得本文还不错,记得关注或者给个 star,你们的赞 ...
随机推荐
- Windows系统下载最新版Windows10 iso映像
在电脑PC端如何下载最新版的完整Windows10 iso映像?打开https://www.microsoft.com/zh-cn/software-download/windows10/页面,是不能 ...
- 【责任链设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
简介 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,也叫职责链模式.命令链模式.这种模式为请求创建了一个接收者对象的链,允许你将请求沿着处理者链进行 ...
- 每日复习关于static 饿汉式 懒汉式,单例设计模式
1.1.static 的使用 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过 new 关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部 ...
- abc285G
ABC 285 G - Tatami Solution 网络流 网格图是一个天然二分图, 可以按 横纵坐标之和 的奇偶性将相邻两格分属于左部和右部. 记'?' 或 '2' 的格子为待匹配点, 记横纵坐 ...
- Sqlmap注入dvwa平台low级别
工具介绍:sqlmap是一款开源的软件 SQL注入攻击是黑客对数据库进行攻击的常用手段之一.随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于程序员的水平及经验也参差不 ...
- 快速搭建一个go语言web后端服务脚手架
快速搭建一个go语言web后端服务脚手架 源码:https://github.com/weloe/go-web-demo web框架使用gin,数据操作使用gorm,访问控制使用casbin 首先添加 ...
- keycloak~时间不正确的问题
首先我们应该知道,写到数据库里的时间,主要和你的mysql时区system_time_zone有关,而把mysql里的数据取出来,以json形式响应到浏览器上,这个时间会经过反序列化的过程,这时时间和 ...
- Linux rsyslogd服务学习
本篇笔记来自该博客: http://c.biancheng.net/view/1097.html 服务简介 在CentOS 6.x 中日志服务已经由 rsyslogd 取代了原先的 syslogd.r ...
- Analysis of Variance ANOVA versus T test 方差分析和T检验
Levels are different groupings within the same independent variable(factor). Eg. if the independent ...
- include-file
0X01 前言 这篇文章介绍文件包含漏洞. 0X02 最常见的两个函数的形象解释: 我们知道文件包含最常见的是两个函数 include() require()(这里就不谈他们的亲戚 include_o ...