如何检查特定 table 的每个存储库命中的特定列?
How to check a specific column on every Repository hit for a specific table?
技术:.Net Core、EF Core 3.0、Abp
在 table 上有一个 "Enabled" 列,而不是遍历每个 Repository.GetAll()
命中并添加 .Where(w => w.Enabled)
有没有办法可以将其设为默认检查?
我搜索了 "Global Filters",但没有完全找到我认为我期待的东西。
干杯
据我了解,这正是全局过滤器的用途。
在您的 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();
}
技术:.Net Core、EF Core 3.0、Abp
在 table 上有一个 "Enabled" 列,而不是遍历每个 Repository.GetAll()
命中并添加 .Where(w => w.Enabled)
有没有办法可以将其设为默认检查?
我搜索了 "Global Filters",但没有完全找到我认为我期待的东西。
干杯
据我了解,这正是全局过滤器的用途。 在您的 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();
}