/// <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;
 }
示例#5
0
 /// <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);
 }
示例#6
0
 /// <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;
 }