NHibernate - Отфильтрованные отношения ManyToMany возвращают нулевые записи
У меня есть две сущности (работа и местоположение), которые связаны через отношения многие ко многим. Недавно мы внедрили логику мягкого удаления в объекте Location, а затем добавили фильтр для Mapping задания следующим образом:
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 объекта сущности содержит пустую запись для каждого удаленного местоположения.
Каков наилучший способ обработать записи мягкого удаления, когда они извлекаются через отношение многие ко многим. (для одного ко многим этот фильтр отлично работает)
Какие еще альтернативы я должен рассмотреть, чтобы сделать это?
1 ответ
Элементы в списке связаны с индексом. При сохранении с использованием отображения в стиле списка эти индексы будут сохранены (списки обычно не перестраиваются внезапно).
Если вы фильтруете некоторые элементы, чтобы сделать видимые элементы стабильными, из этого следует, что для скрытых элементов должны быть нулевые элементы.
Попробуйте использовать другое сопоставление, например, набор, сумку или карту.