EF 6 - 注入where子句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EF 6 - 注入where子句相关的知识,希望对你有一定的参考价值。

有没有办法为EF运行的所有查询普遍添加where子句?我希望所有查询都以“entity.Active == true”运行

答案

最简单的方法(没有实现QueryTranslator接口)就是为你的上下文创建扩展方法

public static IQyertable<YourEntity> OnlyActiveEntities(this YourDbContext context, Action<DbSet<YourEntity>> setConfigurator = null)
{
    var dbSet = context.Set<YourEntity>();
    setConfigurator?.Invoke(dbSet); 

    return context.Set<YourEntity>().AsQueriable().Where(entity => entity.Active == true);
}
另一答案

某些第三方库允许过滤查询:Entity Framework Filter Library List

免责声明:我是Entity Framework Plus项目的所有者

Wiki:EF +查询过滤器

此功能正是您所需要的。您可以添加全局筛选器以筛选所有查询。

例:

// using Z.EntityFramework.Plus; // Don't forget to include this.

QueryFilterManager.Filter<ISoftDelete>(q => q.Where(x => x.IsActive));

以上是关于EF 6 - 注入where子句的主要内容,如果未能解决你的问题,请参考以下文章

ODP.NET / EF6 - WHERE 子句中的 CHAR 数据类型

EF 核心 6 选择空值,尽管 where 子句要求不为空

EF:包含 where 子句 [重复]

二级缓存 EF codeFirst 和 Predicate 不适用于 where 子句

EF4 将 is null 子句添加到 where 子句

EF:包含where子句,+ SubIncludes