9.24 实体/全局查询筛选器
9.24.1 查询筛选器
通常,我们系统中有一些维护字段,如 IsDeleted 字段,这个字段用来 标识用户已经删除的数据,那么我们需要每次查询数据的时候带上这个字段,避免查询出不该出现的数据。
Furion 提供非常灵活方便的全局查询筛选器,能够应用到每一次查询中。
9.24.2 多种筛选器配置
9.24.2.1 单表筛选器
单表筛选器就是只针对特定实体进行筛选操作,使用简单,只需要在继承 IEntityTypeBuilder<TEntity> 接口并实现即可,如:
using Furion.DatabaseAccessor;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;
namespace Furion.Core
{
public class Person : Entity, IEntityTypeBuilder<Person>
{
public Person()
{
CreatedTime = DateTime.Now;
IsDeleted = false;
}
public string Name { get; set; }
public int Age { get; set; }
public string Address { get; set; }
public void Configure(EntityTypeBuilder<Person> entityBuilder, DbContext dbContext, Type dbContextLocator)
{
entityBuilder.HasQueryFilter(u => !u.IsDeleted);
}
}
}