我有两个通过多对多关系连接的实体(工作和位置)。最近我们在 Location 实体上实现了软删除逻辑,然后在作业映射上添加了一个过滤器,如下所示:
HasManyToMany(x => x.Locations)
.Table("JobLocation")
.ParentKeyColumn("JobId")
.ChildKeyColumn("LocationId")
.ApplyChildFilter<ExcludeDeletedFilter>("IsDeleted = :condition")
.Cascade.None();
多对多关系的查询如下所示
select ...
from Job job
left outer join JobLocation jl
on jl.JobId = job.Id
left outer join Location loc
on loc.Id = jl.LocationId and IsDeleted = 0
问题是,现在,当获取具有一些已删除位置的作业时,作业实体上的 Locations 集合包含每个已删除位置的空条目。
当通过多对多关系获取这些软删除记录时,处理这些软删除记录的最佳方法是什么。(对于一对多来说,这个过滤器做得很好)
我应该考虑其他哪些选择来做到这一点?