C# 包含()上的EF Core HasQueryFilter

C# 包含()上的EF Core HasQueryFilter,c#,.net-core,entity-framework-core,dbcontext,C#,.net Core,Entity Framework Core,Dbcontext,如果HasQueryFilter方法适用于由Include()方法连接的实体,我有点困惑 根据这篇(旧)文章,他们陈述如下: 当查询检索的数据时,将自动应用筛选器 直接或通过导航属性的特定类型,例如。 使用Include()方法 我在DbContext类中拥有以下内容: protected override void OnModelCreating(ModelBuilder builder) { builder.Entity<Post>().HasQueryFilter(x

如果
HasQueryFilter
方法适用于由
Include()
方法连接的实体,我有点困惑

根据这篇(旧)文章,他们陈述如下:

当查询检索的数据时,将自动应用筛选器 直接或通过导航属性的特定类型,例如。 使用Include()方法

我在
DbContext
类中拥有以下内容:

protected override void OnModelCreating(ModelBuilder builder)
{
    builder.Entity<Post>().HasQueryFilter(x => x.Removed == null);
}
如果我直接查询
Post
,那么
haskerfilter
就完成了它的工作

// Here query filter works, because of query directly on Entity
var posts = _dbContext.Posts.ToList();

因此,在使用
Include()
连接的实体上,此功能不起作用(目前?)是正确的吗?或者是我弄错了什么?

这是跟踪的问题(这就是为什么多个
使用
语句有效)

但有不同的方法可以做到这一点:

我们使用:
\u dbContext.Entry(blog.State=EntityState.Detached

我无法复制(使用ef core 2.1.4)。我的查询过滤器在类似的设置下工作。@GertArnold我在单元测试中使用InMemory提供程序。不确定这是否能带来不同?当然可以。每个db品牌都有自己的查询提供程序。也许你应该检查一下这是否是一个已知的错误。@GertArnold发现了问题。在我的测试中,我只使用了一个
语句来创建一个
dbContext
,而不是两个,就像你在文档中看到的那样。显然,您必须有一个
using
语句,将数据添加到
dbContext
,然后使用另一个
using
语句进行查询。现在这样工作很好。抱歉@Vivendi我也有同样的问题,我不理解你评论的解决方案。你能再解释一下吗?这会有很大的帮助。非常感谢。
// Here query filter works, because of query directly on Entity
var posts = _dbContext.Posts.ToList();