目录

一、什么是ORM

二、什么是EF Core

三、EF Core的增删改查

查询

添加

更新

删除

四、 批量更新

使用EFCore.BulkExtensions操作Postgresql

使用 Zack.EFCore.Batch.MySQL.Pomelo_NET6 操作Mysql


一、什么是ORM

对象关系映射,就是让开发者用对象操作的形式操作数据库

有哪些ORM:EF Core、Dapper、SqlSugar、FreeSql等。

二、什么是EF Core

(EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术。EF Core 支持多个数据库引擎。

三、EF Core的增删改查

先new一个context实例,通过绑定跟踪的DbSet实体,实现数据操作

private CodeFContext codeFContext= new CodeFContext();

查询

private List<Book> _books;public List<Book> Books{get => _books; set => SetProperty  (ref _books, value);}
//查询Book表所有数据
Books = codeFContext.Books.ToList();
//条件查询,linq操作
Books = codeFContext.Books.Where(x => x.Id > 3).ToList();

添加

private async void InsertData(){var books=new List<Book>() { new Book() { Title ="追风筝的人"},new Book() { Title ="霍乱时期的爱情"}};//修改DbSetcodeFContext.Books.AddRange(books);//再save更改await codeFContext.SaveChangesAsync();}

更新

private async void UpdateData(){//需要先查询var books = codeFContext.Books.Where(x => x.Title == "追风筝的人");//再对查询到的数据进行修改foreach (var item in books){item.Title = "放学后";}//再save更改await codeFContext.SaveChangesAsync();}

删除

private async void DeleteData(){//先Linq查询var books= codeFContext.Books.Where(x => x.Id>5);//从实体中删除数据codeFContext.Books.RemoveRange(books);//再save更改await codeFContext.SaveChangesAsync();}

四、 批量更新

使用EFCore.BulkExtensions操作Postgresql

Bulk相关(一条操作一个事务,均是传入实体)

//查询
List<Student> students =new List<Student>();await dbFContext.BulkReadAsync(students);
//插入
var students = new List<Student>(){new Student() {Id=1, Name = "AA" ,StuNum="2010"},new Student() {Id=2, Name = "BB" ,StuNum="2011"},new Student() {Id=3, Name = "CC",StuNum="2012" }};await dbFContext.BulkInsertAsync(students);
//删除
var stus = dbFContext.Students;await dbFContext.BulkDeleteAsync(stus.ToList());
//更新
var stus = dbFContext.Students.ToList();foreach (var item in stus){item.Name += "QQQ";}await dbFContext.BulkUpdateAsync(stus);

Batch相关(按条件)

//删除
await dbFContext.Students.Where(x=>x.Name=="BB").BatchDeleteAsync();
//更新(改成新数据)
await dbFContext.Students.Where(x => x.StuNum == "2222").BatchUpdateAsync(new Student() {StuNum="2233" });
//更新(基于原数据)
await dbFContext.Students.Where(x => x.StuNum == "2233").BatchUpdateAsync(x=>new Student() { StuNum =x.StuNum+ "444" });

事务

//Bulk相关(一条操作一个事务,均是传入实体)//直接使用这些操作时,每个操作都是独立的事务,并且会自动提交。//如果我们需要在单个过程中执行多个操作,则应使用显式事务public async void TransactionTest(){using (var transaction= dbFContext.Database.BeginTransaction()){try{var students = new List<Student>(){new Student() {Id=6, Name = "DD" ,StuNum="2044"},new Student() {Id=7, Name = "EE" ,StuNum="2055"}};await dbFContext.BulkInsertAsync(students);await dbFContext.Students.Where(x => x.StuNum == "2044").BatchUpdateAsync(new Student() { Name = "DDEEF" });transaction.Commit();}catch (Exception ex ){//using包裹不需要手写rollback,报错会自动回滚Console.WriteLine(ex.Message);}}}

使用 Zack.EFCore.Batch.MySQL.Pomelo_NET6 操作Mysql

//添加配置
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){if (!optionsBuilder.IsConfigured){optionsBuilder.UseBatchEF_MySQLPomelo();}}//批量删除,
await codeFContext.DeleteRangeAsync<Book>(x=>x.Id>5);
//批量更新,条件,设置更新的列和值,执行await codeFContext.BatchUpdate<Book>().Where(x => x.Title == "放学后").Set(x=>x.Title,x=>x.Title+"Test").Set(x=>x.Price,x=>20).ExecuteAsync();
//批量删除和批量更新都支持通过Take()、Skip()来实现部分删除和部分更新
// Take(3) 代表选取3个 ,如果满足条件的不足3个 那就有几个选几个 可以一个都没有,超过的话只选顺序前 3 个
await codeFContext.Books.Where(x=>x.Id>5).Take(3).DeleteRangeAsync(codeFContext);
//Skip(3) 代表跳过3个 ,如果满足条件的不足3个 那就有几个选几个 跳过几个,超过的话只跳过顺序的前 3 个
await codeFContext.BatchUpdate<Book>().Where(x => x.Title == "放学后").Set(x => x.Title, x => x.Title + "Test").Set(x => x.Price, x => 20).Skip(3).ExecuteAsync();
//批量插入
var books=new List<Book>() { new Book() { Title ="追风筝的人"},new Book() { Title ="霍乱时期的爱情"}};await codeFContext.BulkInsertAsync(books);

.NET Core之EF Core相关推荐

  1. ASP.NET Core 和 EF Core系列教程——CRUD

    ASP.NET Core 和 EF Core系列教程--CRUD (2 / 10) CRUD 为创建.读取.更新.删除的英文首字母的缩写 作者:Tom Dykstra和Rick Anderson Co ...

  2. .Net Core 使用EF Core codefirst模式

    .Net Core 使用EF Core codefirst模式 什么是codefirst模式 EF Core有两种数据库设计模式,DBfirst 数据库优先.Codefirst 代码优先. 1.我们一 ...

  3. 【ASP.NET Core】EF Core 模型与数据库的创建

    大家好,欢迎收看由土星卫视直播的大型综艺节目--老周吹逼逼. 今天咱们吹一下 EF Core 有关的话题.先说说模型和数据库是怎么建起来的,说装逼一点,就是我们常说的 "code first ...

  4. ASP.NET Core MVC+EF Core从开发到部署

    笔记本电脑装了双系统(Windows 10和Ubuntu16.04)快半年了,平时有时间就喜欢切换到Ubuntu系统下耍耍Linux,熟悉熟悉Linux命令.Shell脚本以及Linux下的各种应用的 ...

  5. 搭建.NET CORE MVC + EF CORE 的Demo

    一.建库建表 USE [Test_Demo] GO /****** Object: Table [dbo].[SY_S_DEPARTMENT] Script Date: 2022/3/21 8:41: ...

  6. ASP.NET Core 使用 EF Core

    一.NuGet安装EF Core支持的程序包,使用sql server 数据库 右键单击"项目" > "管理NuGet程序包" 查找安装 sql serv ...

  7. 用ASP.NET Core MVC 和 EF Core 构建Web应用 (一)

    系统必备 .NET Core 2.0.0 SDK 或更高版本. 已安装 ASP.NET 和 Web 开发工作负载的 Visual Studio 2017 15.3 版或更高版本. 创建Web应用程序 ...

  8. 教你10分钟对接人大金仓EF Core 6.x

    [导读]目前.NET Core中据我了解到除了官方的EF Core外,还用的比较多的ORM框架(恕我孤陋寡闻哈,可能还有别的)有FreeSql.SqlSugar(排名不分先后). FreeSql和Sq ...

  9. 万字长文,带你彻底理解EF Core5的运行机制,让你成为团队中的EF Core专家

    在EF Core 5中,有很多方式可以窥察工作流程中发生的事情,并与该信息进行交互.这些功能点包括日志记录,拦截,事件处理程序和一些超酷的最新出现的调试功能.EF团队甚至从Entity Framewo ...

  10. EF Core 实现读写分离的最佳方案

    前言 公司之前使用Ado.net和Dapper进行数据访问层的操作, 进行读写分离也比较简单, 只要使用对应的数据库连接字符串即可. 而最近要迁移到新系统中,新系统使用.net core和EF Cor ...

最新文章

  1. 使用最小堆使用优先级队列(c语言版本)
  2. APP自动化测试过程概述
  3. Robotaxi有进账了!中国自动驾驶商业化迈出一大步
  4. 白话详细解读(四)-----FCN
  5. Linux-重装系统之静态ip配置
  6. 学习Linux——计算机概论
  7. 拿到串口的数据如何解析_详解如何用binlog2sql解析工具来实现mysql数据表异地恢复...
  8. IT成长日记(二)——打印机硒鼓重置
  9. UCOS操作系统——任务管理(二)
  10. c语言字符串转为大写,c语言 字符串转大写的简单实例
  11. 苏州新导蓝牙定位系统原理精确解读,三分钟看懂蓝牙定位
  12. 电大本科计算机应用基础模块6,国家开放大学计算机应用基础模块3形考答案.xls...
  13. java delphi socket_Delphi跨平台Socket通讯库
  14. 【JZOJ3337】wyl8899的TLE【二分】【哈希】
  15. 微信图文排版指南-如何在图片上添加文字?
  16. oracle 赋予dorp,ORACLE高级操作
  17. 微信第三方平台开发流程
  18. Buy and Resell(贪心好题!)
  19. 反问疑问_反问疑问句
  20. 学会了这些!你就是天下间的美容高手

热门文章

  1. Vue中的SEO优化
  2. PHP的数据类型主要有三大类八小类。
  3. 网页证书错误怎么回事? 证书错误如何解决
  4. excel打开html非常慢,打开excel很慢
  5. 【OpenGL开发】关于GLEW扩展库
  6. 离线底图瓦片,可用于Cesium加载使用【图说GIS】
  7. promise跟ajax区别,Promise和AJAX有什么区别?
  8. python计算器实验报告_python作业模拟计算器开发(第五周)
  9. 什么是RFID? 射频识别技术的特点及工作原理!
  10. 奇奇邮件群发助手V2.0使用说明