コード例 #1
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="FilterableQueryBase" /> class.
        /// </summary>
        /// <param name="alias">
        ///     The alias.
        /// </param>
        /// <param name="query">
        ///     The query.
        /// </param>
        protected FilterableQueryBase
        (
            string alias           = null,
            IFilterableQuery query = null
        )
        {
            if (query != null)
            {
                Aliases    = query.Aliases.ToDictionary(x => x.Key, x => x.Value);
                Criterions = query.Criterions.ToList();
                Joins      = query.Joins.ToList();
            }
            else
            {
                Aliases    = new Dictionary <string, string>();
                Criterions = new List <ICriterion>();
                Joins      = new List <Join>();

                if (alias != null)
                {
                    Aliases.Add("entity.root.alias", alias);
                }
            }

            Alias = alias;

            Data = new QueryHelperData(Aliases, Joins);
        }
コード例 #2
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="DelegatedJoinBuilder{T,TSource,TQuery}" /> class.
        /// </summary>
        /// <param name="joinBuilder">
        ///     The wrapped join builder instance.
        /// </param>
        /// <param name="query">
        ///     The query instance.
        /// </param>
        /// <param name="alias">
        ///     The alias.
        /// </param>
        /// <exception cref="ArgumentNullException">
        ///     The wrapped join builder instance is a null-reference.
        /// </exception>
        public DelegatedJoinBuilder
        (
            IJoinBuilder <TSource, TQuery> joinBuilder,
            IFilterableQuery <T> query,
            string alias
        )
        {
            if (joinBuilder == null)
            {
                throw new ArgumentNullException("joinBuilder");
            }

            if (query == null)
            {
                throw new ArgumentNullException("query");
            }

            _alias = alias;

            _joinBuilder = joinBuilder;

            _query = query;

            _rebaser = new ExpressionRebaser(typeof(T), _alias);
        }
コード例 #3
0
 private static WrappedJoinBuilder <T, IImmediateFlowQuery <T> > CreateWrappedJoinBuilder <T>
 (
     IJoinBuilder <T, IImmediateFlowQuery <T> > innerJoinBuilder,
     IFilterableQuery <T> query
 )
 {
     return(new WrappedJoinBuilder <T, IImmediateFlowQuery <T> >(innerJoinBuilder, query));
 }
コード例 #4
0
 private static DelegatedJoinBuilder <T, TSource, IImmediateFlowQuery <TSource> > CreateDelegatedJoinBuilder <T, TSource>
 (
     IJoinBuilder <TSource, IImmediateFlowQuery <TSource> > innerJoinBuilder,
     IFilterableQuery <T> query,
     string alias
 )
 {
     return(new DelegatedJoinBuilder <T, TSource, IImmediateFlowQuery <TSource> >(innerJoinBuilder, query, alias));
 }
コード例 #5
0
ファイル: Where.cs プロジェクト: niklaskallander/flowquery
        public static void Id_Of_JoinedSetting_AliasedByMagicString_FilteredInJoin_Is
        (
            IFilterableQuery <UserEntity> query,
            int id
        )
        {
            Setting setting = null;

            query.Inner.Join("Setting", () => setting, () => setting.Id == id);
        }
コード例 #6
0
ファイル: Where.cs プロジェクト: niklaskallander/flowquery
        public static void Id_Of_JoinedSetting_FilteredInJoin_UsingRevealer_Is
        (
            IFilterableQuery <UserEntity> query,
            int id
        )
        {
            Setting setting = null;

            query.Inner.Join(x => x.Setting, () => setting, () => setting.Id == id, NoopRevealConvention());
        }
コード例 #7
0
ファイル: Where.cs プロジェクト: niklaskallander/flowquery
        public static void Id_Of_JoinedSetting_FilteredInJoin_Is
        (
            IFilterableQuery <UserEntity> query,
            int id
        )
        {
            Setting setting = null;

            query.Inner.Join(x => x.Setting, () => setting, () => setting.Id == id);
        }
コード例 #8
0
ファイル: Where.cs プロジェクト: niklaskallander/flowquery
        public static void Id_Of_JoinedSetting_UsingRevealer_Is
        (
            IFilterableQuery <UserEntity> query,
            int id
        )
        {
            Setting setting = null;

            query.Inner.Join(x => x.Setting, () => setting, NoopRevealConvention())
            .ApplyFilterOn(() => setting, Id_Of_Setting_Is(id));
        }
コード例 #9
0
ファイル: Where.cs プロジェクト: niklaskallander/flowquery
        public static void Id_Of_JoinedSetting_UsingWhereHelper_Is
        (
            IFilterableQuery <UserEntity> query,
            int id
        )
        {
            Setting setting = null;

            query.Inner.Join(x => x.Setting, () => setting)
            .ApplyFilterOn(() => setting, Id_Of_Setting_UsingWhereHelper_Is(id));
        }
コード例 #10
0
ファイル: Where.cs プロジェクト: niklaskallander/flowquery
        public static void Id_Of_JoinedSetting_AliasedByMagicString_Is
        (
            IFilterableQuery <UserEntity> query,
            int id
        )
        {
            Setting setting = null;

            query.Inner.Join("Setting", () => setting)
            .ApplyFilterOn(() => setting, Id_Of_Setting_Is(id));
        }
コード例 #11
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="FilterableQuery{TSource,TQuery}" /> class.
        /// </summary>
        /// <param name="alias">
        ///     The alias.
        /// </param>
        /// <param name="query">
        ///     The query.
        /// </param>
        protected FilterableQuery
        (
            string alias           = null,
            IFilterableQuery query = null
        )
            : base(alias, query)
        {
            Query = this as TQuery;

            if (Query == null)
            {
                throw new ArgumentException("The provided TQuery must the type of this instance");
            }

            Inner      = new JoinBuilder <TSource, TQuery>(this, Query, JoinType.InnerJoin);
            LeftOuter  = new JoinBuilder <TSource, TQuery>(this, Query, JoinType.LeftOuterJoin);
            RightOuter = new JoinBuilder <TSource, TQuery>(this, Query, JoinType.RightOuterJoin);
            Full       = new JoinBuilder <TSource, TQuery>(this, Query, JoinType.FullJoin);
        }
コード例 #12
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="WrappedJoinBuilder{TSource,TQuery}" /> class.
        /// </summary>
        /// <param name="joinBuilder">
        ///     The wrapped join builder instance.
        /// </param>
        /// <param name="query">
        ///     The query instance.
        /// </param>
        /// <exception cref="ArgumentNullException">
        ///     The wrapped join builder instance is a null-reference.
        /// </exception>
        public WrappedJoinBuilder
        (
            IJoinBuilder <TSource, TQuery> joinBuilder,
            IFilterableQuery <TSource> query
        )
        {
            if (joinBuilder == null)
            {
                throw new ArgumentNullException("joinBuilder");
            }

            if (query == null)
            {
                throw new ArgumentNullException("query");
            }

            _joinBuilder = joinBuilder;

            _query = query;
        }
コード例 #13
0
 public void Apply(IFilterableQuery <T> query)
 {
     _filter(query);
 }