public static AliasBaseQueryFilter Filter(this DbContext context, object key)
#endif

        {
            var filterContext = AliasQueryFilterManager.AddOrGetFilterContext(context);

            return(filterContext.GetFilter(key));
        }
        public static IQueryable <T> Filter <T>(this DbSet <T> query, params object[] keys) where T : class
#endif
        {
            var queryFilterQueryable = AliasQueryFilterManager.GetFilterQueryable(query);

            var nonQueryFilter = queryFilterQueryable != null ? (IQueryable <T>)queryFilterQueryable.OriginalQuery : query;

            var context = queryFilterQueryable != null ? queryFilterQueryable.Context : query.GetDbContext();

            var filterContext = AliasQueryFilterManager.AddOrGetFilterContext(context);

            return(filterContext.ApplyFilter(nonQueryFilter, keys));
        }
        public static AliasBaseQueryFilter Filter <T>(this DbContext context, object key, Func <IQueryable <T>, IQueryable <T> > queryFilter, bool isEnabled = true)
#endif
        {
            var filterContext = AliasQueryFilterManager.AddOrGetFilterContext(context);

            var filter = filterContext.AddFilter(key, queryFilter);

            if (isEnabled)
            {
                filter.Enable();
            }

            return(filter);
        }
Beispiel #4
0
        public static IQueryable <T> SetFiltered <T>(this DbContext context) where T : class
#endif
        {
            var filterContext = AliasQueryFilterManager.AddOrGetFilterContext(context);

            if (filterContext.FilterSetByType.ContainsKey(typeof(T)))
            {
                var set = filterContext.FilterSetByType[typeof(T)];

                if (set.Count == 1)
                {
                    return((IQueryable <T>)set[0].DbSetProperty.GetValue(context));
                }
                throw new Exception(ExceptionMessage.QueryFilter_SetFilteredManyFound);
            }

            throw new Exception(ExceptionMessage.QueryFilter_SetFilteredNotFound);
        }