2016-11-16 55 views
0

是否有一種方法可以在EF正在運行的所有查詢中通用添加where子句?我希望所有的查詢與運行「entity.Active ==真」,例如EF 6 - 注入where子句

回答

0

最簡單的方法(不實現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); 
} 
1

一些第三方創建擴展方法庫允許過濾查詢:Entity Framework Filter Library List

免責聲明:我的項目Entity Framework Plus

維基的主人:EF +查詢過濾器

此功能正是你要找的。您可以添加全局過濾器來過濾所有查詢。

實施例:

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

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