Я использую глобальные фильтры на фотографиях в DbContext. Каждое фото имеет свойство isApproved, если оно не одобрено, оно должно быть равно false.
Итак, в методе OnModelCreating я установил глобальный фильтр, подобный этому
builder.Entity<Photo>().HasQueryFilter(p => p.IsApproved);
И затем он работает, как и ожидалось, возвращает все, что верно. Тем не менее, для текущего пользователя, который вошел в систему, я хочу, чтобы пользователь мог видеть фотографии, даже если они находятся в состоянии одобрения. И я применяю IgnoreFilter к репозиторию следующим образом:
public async Task<User> GetUser(int id, bool isCurrentUser)
{
var query = _context.Users.Include(p => p.Photos).AsQueryable();
if (isCurrentUser)
{
// For current user the global filter is dissabled
query = query.IgnoreQueryFilters();
}
// When retrieve the user, we retrieve his photos as well.
var user = await _context.Users.FirstOrDefaultAsync(u => u.Id == id);
// returning default means null if the user doesn`t matches his id
return user;
}
Когда я получаю пользователя, я все еще не вижу неутвержденные фотографии w, даже если я игнорирую правило для вошедшего в систему пользователя. Что я делаю не так?