Я немного запутался, если метод HasQueryFilter
должен работать с объектами, которые объединены методом Include()
.
Из этой (старой) статьи они утверждают следующее: https://blogs.msdn.microsoft.com/dotnet/2017/05/12/announcing-ef-core-2-0-preview-1/
Фильтры применяются автоматически, когда запросы извлекают данные определенных типов напрямую, а также через свойства навигации, например, с использованием метода Include () .
В моем классе DbContext
есть следующее:
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<Post>().HasQueryFilter(x => x.Removed == null);
}
Если я затем выполню следующее, тогда он также извлекает все записи Posts
, где Removed
равно not null.
// Doesn't apply the query filter because of the Include()
var blog = _dbContext.Blogs.Include(x => x.Posts).Where(x => x.Id == 100);
Если я запрашиваю Post
напрямую, то HasQuerFilter
выполняет свою работу.
// Here query filter works, because of query directly on Entity
var posts = _dbContext.Posts.ToList();
Так правильно ли, чтоэта функция не работает (пока?) на объектах, которые объединяются с использованием Include()
?Или я что-то затуманиваю?