ASP.NET Core 6.0/8.0学习笔记(十四)——使用EF Core实现基本增删改查

在前一节EF Core开发环境搭建中已经完成了初始环境搭建。继续使用上一节的代码完成基本的增删改查:

一、插入数据

1.步骤:创建实体,调用对应表的Add()方法,然后保存修改(SaveChanges)
在这里插入图片描述

2.注意:在SaveChanges()方法被调用之前,通过操作Dog对象的属性只是将数据保存到内存当中。修改完成后,需要调用SaveChanges()方法将更改同步到数据库。
3.EF Core推荐使用异步方法(涉及到IO)。上述代码用异步写为如下:
在这里插入图片描述

4.EF Core会默认追踪实体的状态,并在SaveChanges()方法被调用时对数据库进行修改

二、数据查询

1.在前面的数据库创建中,在数据库的上下文类(DemoDbContext)中,每一个表都被指定为DbSet类型,如图所示:
在这里插入图片描述

转到DbSet的定义,如图:
在这里插入图片描述

注意到DbSet实现了IEnumerable接口,也就意味着可以使用LINQ的方式来对数据库进行查询。
2.Where条件查询
例如,查询Book表中价格低于65的书籍:

其中,Book类重写了继承自Object类的ToString()方法:
在这里插入图片描述

3.对查询结果进行排序与分组:API同LINQ
在这里插入图片描述

三、数据修改

1.对数据进行修改,首先需要将需要修改的数据查出来,然后对查询出来的数据进行修改,然后调用SaveChanges()保存修改。
首先,先查询:
var b = context.Books.Single(b => b.Title == “GIS原理与应用”);
再修改:
b.Title = “GIS”;
在这里插入图片描述

运行结果:
在这里插入图片描述

四、数据删除

1.处理过程与修改一致,首先执行查询操作,然后将数据执行删除:
在这里插入图片描述

删除前:
在这里插入图片描述

执行删除代码后:
在这里插入图片描述
在这里插入图片描述

五、EFCore生命周期

1.每次使用一个DbContext都是打开了一个新的连接。为了节约数据资源,在完成数据查询后应该使用Dispose()方法释放资源。此时该实例的生命周期就结束了。
在这里插入图片描述

2.每次打开链接与 释放链接称为一个工作单元,每个工作单元中间的代码都可以称为工作单元生命周期的一部分。工作单元会持续跟踪实体的状态,当完成数据操作后它将找出更改数据库作为工作结果时需要执行的所有操作。注意:实体跟踪会影响性能
3.使用后释放DbContext非常重要。它可以确保释放所有非托管资源,并注销所有的事件以及挂钩,以防止实例在保持引用时出现内存泄漏
4.DbContext不是线程安全的,不要在线程之间共享上下文。因此针对于DbContext的任何异步调用都应该进行等待。例如当调用SaveChangesAsync()时必须使用await进行等待:
在这里插入图片描述
总结:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GISer_Qing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值