глобального фильтра запросов, который отбрасывает данные об автомобилях со значением свойства
IsDrivable
, равным
false
:
modelBuilder.Entity<Car>(entity =>
{
entity.HasQueryFilter(c => c.IsDrivable);
...
});
Откройте файл класса
CarTests.cs
и добавьте показанный далее тест (все тесты в последующих разделах находятся в
СаrTests.cs
, если не указано иначе):
[Fact]
public void ShouldReturnDrivableCarsWithQueryFilterSet
{
IQueryable<Car> query = Context.Cars;
var qs = query.ToQueryString;
var cars = query.ToList;
Assert.NotEmpty(cars);
Assert.Equal(9, cars.Count);
}
Также вспомните, что в процессе инициализации данных были созданы 10 записей об автомобилях,из которых один установлен как неуправляемый. При запуске запроса применяется глобальный фильтр запросов и выполняется следующий код SQL:
На заметку! Как вскоре будет показано, глобальные фильтры запросов также применяются при загрузке связанных сущностей и при использовании методов
FromSqlRaw
и
FromSqlInterpolated
.
Отключение глобальных фильтров запросов
Чтобы отключить глобальные фильтры запросов для сущностей в запросе, добавьте к запросу LINQ вызов метода
IgnoreQueryFilters
. Он заблокирует все фильтры для всех сущностей в запросе. Если есть несколько сущностей с глобальными фильтрами запросов и некоторые фильтры сущностей нужны, тогда потребуется поместить их в методы
Where
оператора LINQ. Добавьте в файл класса
CarTests.cs
приведенный ниже тест, который
отключает фильтр запросов и возвращает все записи: