# 查询过滤器 高级

之所以设计这个查询过滤器,主要是想应用于一些有固定查询条件的场景。

例如

之前我做公司内部系统时,就有一个需求,订单需要关联公司,然后不同的用户登录后,只能查看到用户有权限的公司所关联的订单数据。那么按传统方法,我需要在订单的查询的方法里先查出用户有权限的公司,然后限制订单的公司字段只在有权限的公司里,那如果生产订单也需要这个功能呢,发货单也需要呢,我需要把这段代码重复制N次,那太不优雅了。

目前互联网流行的Saas模式,其实也可以应用这个查询过滤器实现,我们知道Saas模式其实就是在数据记录上关联上不同的租户Id,实现不同租户只能查看自己的数据,那么这种情况就完全可以使用上我这个查询过滤器进行处理。

# 编写过滤器

这个稍微有点复杂,具体可参考框架的服务层的CompanyQueryFilter.cs类,这是一个我之前写的公司过滤器,就是上面的关联公司的例子,根据用户有权限公司进行查询过滤。

查询过滤器统一放在LessSharp.Service层的QueryFilters目录下。

# 使用方法

就以上面的CompanyQueryFilter公司过滤器为例,在你需要使用这个过滤器的服务类上实现ICompanyQueryFilter<IEntity>接口,实现Expression<Func<TEntity, object>> CompanyField字段,指定公司字段。

上次更新: 1/3/2021, 9:01:12 PM