是否有一种向EF正在运行的所有查询普遍添加where子句的方法?例如,我希望所有查询都使用"entity.Active == true“运行。
发布于 2016-11-16 21:09:53
最简单的方法(不实现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);
}发布于 2016-11-17 15:31:30
一些第三方库允许过滤查询:实体框架过滤器库列表
免责声明:我是项目实体框架+的所有者
Wiki: EF+查询过滤器
此功能正是您所要寻找的。您可以添加一个全局筛选器来过滤所有查询。
示例:
// using Z.EntityFramework.Plus; // Don't forget to include this.
QueryFilterManager.Filter<ISoftDelete>(q => q.Where(x => x.IsActive));https://stackoverflow.com/questions/40641486
复制相似问题