/// <summary>Constructor.</summary> /// <param name="dbSetProperty">The database set property.</param> public QueryFilterSet(DbContext context, PropertyInfo dbSetProperty) { // NOT longer used? // CreateFilterQueryableCompiled = new Lazy<Func<DbContext, QueryFilterSet, object, IQueryable>>(CompileCreateFilterQueryable); DbSetProperty = dbSetProperty; ElementType = dbSetProperty.PropertyType.GetDbSetElementType(); GetDbSetCompiled = new Lazy <Func <DbContext, IQueryable> >(() => CompileGetDbSet(dbSetProperty)); // UpdateInternalQueryCompiled { Action <DbContext, ObjectQuery> compiled; if (!CachedActions.TryGetValue(dbSetProperty, out compiled)) { compiled = CompileUpdateInternalQuery(dbSetProperty); CachedActions.TryAdd(dbSetProperty, compiled); } UpdateInternalQueryCompiled = compiled; } { var currentQuery = dbSetProperty.GetValue(context, null); currentQuery = QueryFilterManager.HookFilter2((IQueryable)currentQuery, ElementType, QueryFilterManager.PrefixFilterID); OriginalQuery = (IQueryable)currentQuery; } }
public void UpdateHook(DbContext context) { var filterID = QueryFilterManager.PrefixFilterID + GetFilterUniqueID(); // Hook on every set foreach (var set in FilterSets) { var currentQuery = set.OriginalQuery; var newQuery = QueryFilterManager.HookFilter2((IQueryable)currentQuery, set.ElementType, filterID); set.UpdateInternalQueryCompiled(Context, newQuery.GetObjectQuery()); } }
/// <summary>Constructor.</summary> /// <param name="dbSetProperty">The database set property.</param> public QueryFilterSet(DbContext context, PropertyInfo dbSetProperty) { CreateFilterQueryableCompiled = new Lazy <Func <DbContext, QueryFilterSet, object, IQueryable> >(CompileCreateFilterQueryable); DbSetProperty = dbSetProperty; ElementType = dbSetProperty.PropertyType.GetDbSetElementType(); GetDbSetCompiled = new Lazy <Func <DbContext, IQueryable> >(() => CompileGetDbSet(dbSetProperty)); UpdateInternalQueryCompiled = new Lazy <Action <DbContext, ObjectQuery> >(() => CompileUpdateInternalQuery(dbSetProperty)); { var currentQuery = dbSetProperty.GetValue(context, null); currentQuery = QueryFilterManager.HookFilter2((IQueryable)currentQuery, ElementType, QueryFilterManager.PrefixFilterID); OriginalQuery = (IQueryable)currentQuery; } }