当前位置: 首页 > article >正文

(实战)WebApi第9讲:EFCore性能优化(IQueryable延迟查询、取消跟踪机制)

一、例子是第8讲的四、6(EFCore的静态化处理 ):分析ToList()

ToList()在下图绿色框内。

二、在没有最终取数据的时候,使用 IQueryable<T> 延迟执行查询

(1)在没有最终取数据的时候,不要使用ToList等方法,因为他们会直接读取数据库        

   First 和 Find 方法会立即执行查询并从数据库中读取数据,而 ToList 和其他类似的方法(如 ToArrayCount 等)也会立即执行查询,但它们返回的是一个集合。

(2)IQueryable<T> 延迟查询的原理、使用方法、作用

1>原理

1)IQueryable<T>是一个泛型接口,它允许你构建查询但不立即执行它。
2)查询的实际执行会在你迭代 IQueryable 对象(如通过 ToListFirst 等方法)或访问某些属性(如 Count)时发生。

2>使用方法

1)使用.where,一直在拼接sql语句,并没有执行。(因为.where返回的类型也是IQueryable)
2)在最终取数据的时候,使用ToList等这些方法执行sql语句。

3)举例

3>作用:节省开销,能更有效地管理数据库访问。

(3)如何在数据库中查看ToList等方法执行的sql语句?【体验延迟发送数据】

1>打开数据库监听工具

2>在VS中使用ToList()等方法读取数据库:会在数据库中直接执行sql语句

2>在VS中使用IQueryable<T> 延迟执行查询,打上断点查看语句执行过程

1)使用.where,一直是在拼接sql语句,并没有执行(因为.where返回的类型也是IQueryable)

2>到ToList()时,数据库内执行sql语句

二、跟踪机制

1、如何修改数据库里的数据?【推荐】——Update()和SaveChanges()

        m 是一个代表集合 jobs 中每个元素的临时变量(或称为范围变量)。这个变量 m 用于在 Single 方法的条件表达式中引用集合中的每个元素。

2、跟踪机制:在实体查询之后,上下文会自动的跟踪实体。

举例:在上述二、1、进行完后,注释掉.Update(),再次运行仍然能修改数据库里的数据

3、提高EFCore查询效率:取消跟踪机制

1>为什么要取消?:对于有些数据只需要查询,不需要修改。那么此时跟踪机制会增加系统的开销,降低系统性能。

1)如下图,本意是只需要返回job,不需要它做任何的操作。

2)但是由于跟踪机制,系统会自动追加一个自动更新的快照,去追踪job。

3)所以如果按照1)的本意【即不需要它做任何的操作(不需要更新等)】,那么系统的自动跟踪就白做了

2>如何取消跟踪机制?

1)全局取消

2)局部取消

     


http://www.kler.cn/a/378612.html

相关文章:

  • 汇编与逆向(一)-汇编工具简介
  • 在K8S中,如果后端NFS存储的IP发送变化如何解决?
  • Tcl教程
  • Unity预制体未即时刷新
  • 解决npm install安装出现packages are looking for funding run `npm fund` for details问题
  • Linux探秘坊-------3.开发工具详解(2)
  • 网络安全等级保护制度详解:一文掌握核心要点
  • webassembly.instance()调用模块中的函数及webassembly.Module.exports()查看模块中的成员或函数信息
  • 「Qt Widget中文示例指南」如何实现窗口嵌入?
  • SpringBoot源码解析(二):启动流程之引导上下文DefaultBootstrapContext
  • 用 css 实现空列表自动提示 “空状态”
  • vite构建Vue3项目:封装公共组件,发布npm包,自定义组件库
  • 使用Jupyter Notebook进行数据科学项目
  • CPU用户时间百分比
  • 【flink】之新版本kafka到kafka
  • 五、Go语言快速入门值条件控制
  • strcat,strncat,strstr
  • VScode调试
  • nodejs爬虫系统
  • Excel:vba实现批量插入图片批注
  • AI助力医疗:未来的医生会是机器人吗?
  • 使用opencv调用TV_L1算法提取光流
  • MySQL表的增删改查(CRUD1)
  • rk3568 适配 CAN
  • 浏览器、性能优化、前端安全重难点面试题
  • LeetCode 0685.冗余连接 II:并查集(和I有何不同分析)——详细题解(附图)