0

技术:.Net Core、EF Core 3.0、Abp

在表格上有一个“已启用”列,而不是通过每次Repository.GetAll()点击和添加.Where(w => w.Enabled),有没有办法可以将其设为默认检查?

我已经搜索了“全局过滤器”,但没有完全找到我认为我所期待的。

干杯

4

1 回答 1

0

据我了解,这正是全局过滤器的用途。在您的 DbContext 中,您将指定哪些表具有 IsEnabled 标志,它将自动应用。

https://entityframeworkcore.com/querying-data-global-filter

public class MyContext : DbContext
{
    public DbSet<Customer> Customers { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(@"Data Source=(localdb)\ProjectsV13;Initial Catalog=CustomerDB;");
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Customer>().HasQueryFilter(c => !c.IsDeleted);
    }
}

如果您碰巧有任何不需要应用全局过滤器的查询,您可以在查询中使用 IgnoreQueryFilters()。

using (var context = new MyContext())
{
    var customers = context.Customers
        .IgnoreQueryFilters().ToList();
}
于 2020-04-29T15:30:57.727 回答