我有点困惑于
从这篇(旧的)文章中,他们陈述了以下内容:https://blogs.msdn.microsoft.com/dotnet/2017/05/12/announcing-ef-core-2-0-preview-1/
如果我执行以下操作,则它还会检索所有
如果我直接查询
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
不为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()
连接的实体上还不能正常工作吗?或者我有什么遗漏吗?
using
语句来创建dbContext
,而不是像文档中所示的两个。显然,您必须有一个using
语句来添加数据到dbContext
,然后使用另一个using
语句来查询。现在这样做可以正常工作了。 - Vivendi