经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MySQL » 查看文章
EF Core + MySQL 基本增删改查
来源:cnblogs  作者:lym003  时间:2023/6/9 9:04:25  对本文有异议

前言

基于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/p/17467099.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号