core mysql 延迟加载_EFCore-DBFirst+性能调优

DBFirst

Nuget需安装的包

Microsoft.EntityFrameworkCore.Tools

Pomelo.EntityFrameworkCore.MySql

Scaffold-DbContext命令

在程序包管理器控制台中输入

Scaffold-DbContext -Force "Server=localhost;User Id=root;Password=****;Database=****" -Provider "Pomelo.EntityFrameworkCore.MySql" -OutputDir "Entities"

性能调优

依赖注入获取数据库上下文

Asp.Net Core 提供了默认的依赖注入容器 IServiceCollection,其默认单例模式

在Startup.cs下,ConfigureServices()中注入

services.AddSingleton(typeof(movies_recContext));

EF查询默认会延迟加载

优点:用时才加载数据,保证数据的有效性

缺点:每次访问都加载一次,加重了数据库服务器的负担

尽量用 Where、Include 而不是 Find、First、Count、ToList

在没有最终获取数据的时候,不要使用后者,因为它们会直接执行Sql。

关闭EFCore跟踪机制

实体查询后上下文会自动建立跟踪,有时只需要查询,不需要修改,这时没必要。

一般情况下,要关闭EFCore跟踪机制,以提高查询性能。官方文档

局部取消

db.Users.AsNoTracking().ToList();

全局取消

db.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值