2016-11-16 3 views
0

Gibt es eine Möglichkeit, eine where-Klausel universell zu allen Abfragen hinzuzufügen, die EF ausführt? Ich möchte alle Abfragen mit „entity.Active == true“ zum BeispielEF 6 - Inject where-Klausel

Antwort

0

Die einfachste Art und Weise (ohne Umsetzung QueryTranslator Schnittstelle) ist zu erstellen Erweiterungsmethode für Ihren Kontext wie diesem

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

Einige Dritten ausführen Bibliothek erlaubt das filtern von Abfragen: Entity Framework Filter Library List

Haftungsausschluss: ich bin der Besitzer des Projekts Entity Framework Plus

Wiki: EF + Abfrage Filter

Diese Funktion ist genau das, wonach Sie suchen. Sie können einen globalen Filter zum Filtern aller Abfragen hinzufügen.

Beispiel:

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

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