NetCore性能优化
2.非跟踪查询
在只读方案中使用结果时,非跟踪查询十分有用,可以更快速地执行。
增加AsNoTracking()表示非跟踪,如:
var users = context.User.AsNoTracking();
还可以在上下文实例级别更改默认跟踪行为:
context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
var users = context.User;
全局筛选
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().HasQueryFilter(p => !p.IsDeleted);
}
批量处理
- 1.批量操作
- 批量更新:
- int count = context.User.Where(u=>u.UserName=="张三1").Update(u=> new User{ UserName= "李四1" });
- 批量删除:
- int count = context.User.Where(u=>u.UserName=="张三1").Delete();
5.合理使用tolist,toList是将数据库开销后将记录数放置到程序的内存中,大数据下禁止使用。
6.频繁查询应调用缓存记录,例如:获取角色资源列表接口。
7.split 方式操作集合应使用linq方式,不推荐使用遍历方式。