/// <summary>Adds or get the filter context associated with the context.</summary> /// <param name="context">The context associated with the filter context.</param> /// <returns>The filter context associated with the context.</returns> public static QueryFilterContext AddOrGetFilterContext(DbContext context) { QueryFilterContext filterContext; if (!CacheWeakFilterContext.TryGetValue(context, out filterContext)) { filterContext = new QueryFilterContext(context); CacheWeakFilterContext.Add(context, filterContext); } return(filterContext); }
/// <summary>Adds or gets the generic filter context associated with the context.</summary> /// <param name="context">The context associated to the filter context.</param> /// <returns>The generic filter context associated with the context.</returns> public static QueryFilterContext AddOrGetGenericFilterContext(DbContext context) { var key = context.GetType().FullName; QueryFilterContext filterContext; if (!CacheGenericFilterContext.TryGetValue(key, out filterContext)) { lock (GenericFilterContextLock) { if (!CacheGenericFilterContext.TryGetValue(key, out filterContext)) { filterContext = new QueryFilterContext(context, true); CacheGenericFilterContext.Add(key, filterContext); } } } return(filterContext); }
/// <summary>Makes a deep copy of this filter.</summary> /// <param name="filterContext">The filter context that owns the filter copy.</param> /// <returns>A copy of this filter.</returns> public override BaseQueryFilter Clone(QueryFilterContext filterContext) { return(new QueryFilter <T>(filterContext, Filter)); }
/// <summary>Constructor.</summary> /// <param name="ownerFilterContext">The context that owns his filter.</param> /// <param name="filter">The filter.</param> public QueryFilter(QueryFilterContext ownerFilterContext, Func <IQueryable <T>, IQueryable <T> > filter) { ElementType = typeof(T); Filter = filter; OwnerFilterContext = ownerFilterContext; }
/// <summary>Makes a deep copy of this filter.</summary> /// <param name="filterContext">The filter context that owns the filter copy.</param> /// <returns>A copy of this filter.</returns> public virtual BaseQueryFilter Clone(QueryFilterContext filterContext) { throw new Exception(ExceptionMessage.GeneralException); }
/// <summary>Create a new QueryFilter.</summary> /// <param name="ownerFilterContext">The context that owns his filter.</param> /// <param name="predicate">The filter delegate.</param> public QueryFilter(QueryFilterContext ownerFilterContext, Func <IQueryable <T>, IQueryable <T> > predicate) { ElementType = typeof(T); OwnerFilterContext = ownerFilterContext; Predicate = predicate; }