全局查询筛选器
全局查询筛选器:EF Core会自动将这个查询筛选器应用于涉及这个实体类型的所有LINQ查询。
场景:软删除、多租户。
用法
向配置类添加
builder.HasQueryFilter(b=>b.IsDeleted==false);
1 2 3 4 5 6 7 8
   | public class ArticleConfig : IEntityTypeConfiguration<Article> {     public void Configure(EntityTypeBuilder<Article> builder)     {         builder.ToTable("T_Articles");         builder.HasQueryFilter(a => a.IsDeleted==false);     } }
   | 
 
忽略全局筛选器
ctx.Articles.IgnoreQueryFilters();
1 2 3 4 5 6 7 8 9 10
   | static void Main(string[] args) {             using (var ctx = new MyDbContext()) {                 foreach (var item in ctx.Articles.Where(a => a.Id > 3)) {                     Console.WriteLine(item.Title);                 }                 foreach (var item in ctx.Articles.IgnoreQueryFilters().Where(a => a.Id > 3)) {                     Console.WriteLine(item.Title);                 }             }          }
  | 
 
全局筛选器可能会有性能缺陷的陷阱。