EFCore-DBFirst+性能调优

EFCore-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"

参数参考scaffold-dbcontext 命令使用说明

EFCore-性能调优

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

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

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

services.AddSingleton(typeof(movies_recContext));

EFCore延迟加载

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

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

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

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

关闭EFCore跟踪机制

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

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

  • 局部取消
db.Users.AsNoTracking().ToList();
  • 全局取消
db.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
posted @ 2021-02-10 09:42  小白中白  阅读(186)  评论(0)    收藏  举报