EF Core 默认会把查询出来的实体放进 ChangeTracker(跟踪器),这让你后续修改实体并 SaveChanges() 很方便。
但如果你的查询是纯读取(列表页、报表、只读接口),跟踪反而是一笔额外开销:
典型场景:
var users = await db.Users
.AsNoTracking()
.Where(x => x.IsActive)
.ToListAsync(ct);
AsNoTracking(),不要全局“一刀切”AsNoTrackingWithIdentityResolution(),适合既想减少跟踪、又想避免重复实体实例的场景