当前位置: 首页 > 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.lryc.cn/news/583589.html

相关文章:

  • 神经网络初步学习3——数据与损失
  • 如何选择时序数据库:关键因素与实用指南
  • HCIP(综合实验)
  • 备受期待的 MMORPG 游戏《侍魂R》移动端现已上线 Sui
  • 【教程】基于GNN的药物相互作用网络中的链接预测
  • 200nl2sql
  • 安全管理协议(SMP):配对流程、密钥生成与防中间人攻击——蓝牙面试核心考点精解
  • python 在运行时没有加载修改后的版本
  • 自动驾驶决策与规划
  • 华为动态路由配置
  • 【Linux | 网络】socket编程 - 使用UDP实现服务端向客户端提供简单的服务
  • 分库分表之实战-sharding-JDBC水平分库+分表后:查询与删除操作实战
  • Android Notification 通过增加addAction 跳转回Service重新执行逻辑
  • 海信IP501H_GK6323处理器免拆卡刷包和线刷救砖包_当贝纯净版
  • LLM 在预测下一个词的时候是怎么计算向量的,说明详细过程
  • 数据库技术体系及场景选型方案
  • RNN及其变体的概念和案例
  • 数据一致性解决方案总结
  • 软件发布的完整流程梳理
  • brainstorm MEG处理流程
  • 【科研绘图系列】R语言绘制解剖图
  • 【leetcode】2235. 两整数相加
  • 本地Qwen中医问诊小程序系统开发
  • softmax
  • PyTorch数据准备:从基础Dataset到高效DataLoader
  • C#字符串相关库函数运用梳理总结 + 正则表达式详解
  • 基于物联网的智能家居控制系统设计与实现
  • 17-C#封装,继承,多态与重载
  • 【AIGC】讯飞长录音ASR转写,使用JAVA实现科大讯飞语音服务ASR转录功能:完整指南
  • JavaScript基础篇——第五章 对象(最终篇)