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

EF提高性能(查询禁用追踪)(关闭延迟加载)

EF默认是支持延迟加载的,在加载一个表的数据时,会把关联表的数据一并加载,这样会影响性能。
一般建议关闭延迟加载可以提高EF加载的性能。还有其他方法提高性能(查询禁用追踪)

如果要实现延迟加载,必须满足下边三个条件,缺一不可
1.context.Configuration.ProxyCreationEnabled应为true。
2.context.Configuration.LazyLoadingEnabled应为true。
3.导航属性应定义为public virtual xxx,如果属性未定义为virtual,则Context不会进行延迟加载。

namespace WindowsFormsApp2
{using System;using System.Data.Entity;using System.Data.Entity.Infrastructure;public partial class BankSystemEntities : DbContext{/*DbContext是实体类和数据库之间的桥梁,DbContext主要负责与数据交互,主要作用:1、DbContext包含所有的实体映射到数据库表的实体集(DbSet < TEntity >)。2、DbContext 将LINQ-to-Entities查询转换为SQL查询并将其发送到数据库。3、更改跟踪: 它跟踪每个实体从数据库中查询出来后发生的修改变化。4、持久化数据: 它也基于实体状态执行插入、更新和删除操作到数据库中。  cxt.SaveChange()*/public BankSystemEntities(): base("name=BankSystemEntities"){Console.WriteLine(this.Configuration.LazyLoadingEnabled);Console.WriteLine(this.Configuration.ProxyCreationEnabled);// 延迟加载禁用了,查询一个表数据时,不会把导航属性对应其他表加载出来。this.Configuration.LazyLoadingEnabled = false;//this.Configuration.ProxyCreationEnabled = true;}protected override void OnModelCreating(DbModelBuilder modelBuilder){throw new UnintentionalCodeFirstException();}public virtual DbSet<AddressInfo> AddressInfo { get; set; }public virtual DbSet<CustomerInfo> CustomerInfo { get; set; }public virtual DbSet<StudentInfo> StudentInfo { get; set; }public virtual DbSet<UserInfo> UserInfo { get; set; }}
}

// 如果禁用延迟加载后,又想同时加载关联表,怎么办呢?使用Include()

var query10 = cxt.CustomerInfo.Include("AddressInfo").ToList();  // path参数指导航属性名称
var query11 = cxt.CustomerInfo.Include(c=>c.AddressInfo).ToList();

// 查询禁用追踪

var query12 = cxt.CustomerInfo.AsNoTracking().ToList();
http://www.dtcms.com/a/271394.html

相关文章:

  • Java+AI精准广告革命:实时推送系统实战指南
  • 人工智能学习81-Yolo预测类
  • JavaEE-初阶-多线程初阶
  • JSP基础
  • day10-Redis面试篇
  • uniapp中使用uView-plus踩坑记录
  • 实变函数 第五章 勒贝格积分(三)
  • HNU 操作系统 Smile_Laughter的学习心得
  • 【RK3568+PG2L50H开发板实验例程】FPGA部分 | 以太网传输实验例程
  • 【PTA数据结构 | C语言版】大整数相乘运算
  • MySQL--DQLDCL
  • uniapp如何创建并使用组件?组件通过Props如何进行数据传递?
  • 七牛云C++开发面试题及参考答案
  • Synology Cloud Sync构建的企业级跨域数据中台
  • OpenGL 生成深度图与点云
  • Spring Boot多数据源配置详解
  • 【AI】环境——深度学习cuda+pytorch配置
  • aichat-core简化 LLM 与 MCP 集成的前端核心库(TypeScript)
  • 前端开发流程设计详解
  • 【leetcode】2235. 两整数相加
  • 【LeetCode 热题 100】21. 合并两个有序链表——(解法二)递归法
  • 仓颉语言 1.0.0 升级指南:工具链适配、collection 操作重构与 Map 遍历删除避坑
  • 深度学习12(卷积神经网络)
  • java idea 本地debug linux服务
  • Vue响应式原理四:响应式-监听属性变化
  • 国密算法(SM2/SM3/SM4)
  • 【MySQL】一些操作:修改MySQL root密码等等
  • Java 多线程编程:原理与实践
  • UI前端与数字孪生结合实践探索:智慧物流的仓储优化与管理系统
  • 供应链管理:定量分析中的无量纲化处理