首页 > 数据库 >EF Core + MySQL 基本增删改查

EF Core + MySQL 基本增删改查

时间:2023-06-09 09:12:20浏览次数:68  
标签:Core dbfrom EF 改查 user UsersController MyDataBaseContext id dbmain

前言

基于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的增删改查就完事了。有不懂的小伙伴可以把问题打在评论区,我来为大家解答。

标签:Core,dbfrom,EF,改查,user,UsersController,MyDataBaseContext,id,dbmain
From: https://www.cnblogs.com/lym003/p/17467099.html

相关文章

  • C# .NET CORE .NET6 RSA 公钥加密 私钥解密
    环境说明:.NETCORE版本:.NET6。 .NETCORE对于RSA的支持:1..NET6中内置了对PKCS1,PKCS82种私钥格式的支持。2.如果你要部署在Linux,docker,k8s中;一定要用“RSA”这个类,不能是.NETFRAMEWORK的 RSACryptoServiceProvider。3..NET中默认加密算法为“RSA/ECB......
  • visualstudio2022 ef6生成代码报错
    StartNotepadinadministratormode,andopenthefile(substitutingCommunityforProfessionalorEnterprisedependingonyourversion):C:\ProgramFiles\MicrosoftVisualStudio\2022\Community\Common7\IDE\Extensions\Microsoft\EntityFrameworkTo......
  • Codeforces 1514 C
    1514C题意给出一个数n,求[1,2,3...n-1]的某个最长子序列,这个子序列的元素乘积模n余1。思路这是个思维题,一个数学公式\[x\equiv1(modn)\rightarrowkx\equivk(mod kn)\]所以子序列中的元素与\(n\)互质,累乘结果模\(n\)后如果不是1,那么将序列中等于结果的元素去......
  • javascript操作xml(增删改查)例子代码
    关键字:javascript操作xml(增删改查)自己做了一个小东西,不是很好,但是对初学来说是一个不错的例子!包括了stu.hta(是HTML应用程序);stu.xml注意下面的HTML代码必须保存为后缀名为hta否则当对XML文件进行操作(增删改)的时候就会提示没有权限!!文件stu.hta代码如......
  • Vue——登录小案例、scoped、ref属性、props其他、混入mixin、插件、Element-ui
    解析Vue项目#1为什么浏览器中访问某个地址,会显示某个页面组件 根组件:APP.vue必须是 <template><divid="app"><router-view></router-view></div> </template>1配置路由 router--->index.js---&......
  • 各类配置文件(DNS, Firefox,Edge)
    DNS配置腾讯DNS:119.29.29.292402:4e00:: 2402:4e00:1::阿里云:223.5.5.5223.6.6.62400:3200::12400:3200:baba::1黑龙江联通:202.97.224.68202.97.224.69CiscoDNS208.67.222.222208.67.220.2202620:119:35::352620:119:53::53浏览器配置Firefoxabout:confi......
  • [ASP.NET Core] 请求大小限制(转载)
    请求大小一般在文件上传的时候会用到,当然也防止传过来的参数过大情况。一、设置请求体的最大值如果不设置请求体大小默认是 30_000_000bytes,大约28.6MB,当超出大小时会出现如下错误:错误:Failedtoreadtherequestform.Requestbodytoolarge.Themaxrequestbodysize......
  • 【完全揭秘】Traefik云原生网关——助力你的业务破万QPS
    Traefik是一款开源的反向代理和负载均衡软件,可以自动地为多个微服务实例进行负载均衡,并提供HTTP/HTTPS/TCP/UDP等协议支持。Traefik具有简单易用、自动发现服务、动态配置、可插拔的中间件等特点,被广泛应用于云原生和容器化场景中,介绍中也是表明自己是一个云原生网关。Traefik......
  • 报错:[Vue warn]: Error in render: "TypeError: Cannot read properties of undefined
    1.错误详情2.错误分析百度此错误发现,很多人可能忘记在main.js中引入store.js并挂载在vue实例上,或者state单词写错了我审查了很多遍代码,依然报错,读取不到state中的数据,后来想到可能是版本的问题此项目是vue2,要使用vuex3才能正常运行,我安装的时候没有指定版本,直接装的是最新的v......
  • vm - 网卡故障-没有分配ip - mv ens33: <BROADCAST,MULTICAST> mtu 1500 qdisc noop s
    执行指令sudodhclientens33即可恢复红色部分,需要查看自己的机器,改为后缀即可cd/etc/sysconfig/network-scripts 需要等待一会才能刷新,使用 servicenetworkrestart 刷新会失败......