全局查询过滤器在实现租户和软删除功能时非常方便。
但我的问题是,例如,当我编写带有联接的查询时
dbContext
.entity1
.Include("entity2.entity3.entity4")
.Where(something)
.select(something)
.toList();
Run Code Online (Sandbox Code Playgroud)
这些实体中的每一个都有全局过滤器,然后在生成的 SQL 中,我为每个 JOIN 获取一个完整的子查询,其中它选择该实体的所有字段并检查全局过滤器。
但我不想要那样。我希望全局过滤器仅适用于查询的根实体(entity1),并且所有其他实体正常加入。
顺便说一句,实体的关系是:
在我的例子中,每个实体都会获得其“租户”字段集,并且当软删除实体时,该软删除会级联到其所有子子实体。因此,检查每个连接的这些字段完全是浪费时间。