Я работаю с EF Core и создал общий репозиторий. У меня есть метод, который возвращает все сущности с их дочерними сущностями. Вот мой метод:
public Repository(DevbAERPContext dbContext)
{
_dbContext = dbContext;
Table = _dbContext.Set<T>();
}
public async Task<IEnumerable<T>> GetAllWithInclude(Expression<Func<T, bool>> where, string[] includeProperties)
{
var result = includeProperties.Aggregate(Table.Where(where), (query, path) => query.Include(path)).AsNoTracking();
return await result.ToListAsync();
}
При использовании этого метода я не хочу получать мягко удаленные данные. Я могу отфильтровать родительскую сущность, написав выражение where, но я также хочу сделать то же самое для дочерних сущностей. В настоящее время я могу решить эту проблему в контроллере следующим образом:
var roles = await _roleRepository.GetAllWithInclude(x => !x.IsDeleted, new string[] { "RoleTemplateSkills", "RoleTemplateSkills.Skill" }).ConfigureAwait(false);
var mappedRoles = _mapper.Map<List<RoleTemplateViewModel>>(roles);
foreach(var mappedRole in mappedRoles)
{
mappedRole.RoleTemplateSkills = mappedRole.RoleTemplateSkills.Where(x => !x.IsDeleted).ToList();
}
Я хочу сделать эту фильтрацию в моем общем методе репозитория. Есть ли способ сделать это?