PostgreSQL中HasFilter()不生效:仍查询到ExternalId为null的记录
问题解决说明
- 你配置的索引过滤(
HasFilter)仅作用于数据库索引本身:它让索引只包含ExternalId不为null的记录,同时保证这些非null值的唯一性,但不会自动过滤你的查询结果,所以查询时能拿到ExternalId为null的记录是正常行为。 - 如果需要在查询时排除
ExternalId为null的记录,有两种方式:- 手动在查询中添加过滤条件:
var targetGroups = dbContext.UserGroups.Where(g => g.ExternalId != null).ToList(); - 配置全局查询筛选器(让所有针对
UserGroup的查询默认排除null值):
在实体配置的Configure方法里补充以下代码:
若某条查询需要包含null值,可通过builder.HasQueryFilter(group => group.ExternalId != null);IgnoreQueryFilters()取消全局筛选:var allGroups = dbContext.UserGroups.IgnoreQueryFilters().ToList();
- 手动在查询中添加过滤条件:
内容的提问来源于stack exchange,提问作者Atlass-
相关产品推荐
相关产品推荐

