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;