コード例 #1
0
        /// <summary>
        /// Append join query condition
        /// </summary>
        /// <param name="joinQuery">Join query</param>
        /// <param name="conditionFilter">Condition filter</param>
        void AppendJoinQueryCondition(IQuery joinQuery, GlobalConditionFilter conditionFilter)
        {
            if (joinQuery == null)
            {
                return;
            }
            conditionFilter.SourceType    = QuerySourceType.JoinQuery;
            conditionFilter.EntityType    = joinQuery.GetEntityType();
            conditionFilter.OriginalQuery = joinQuery;
            var conditionFilterResult = QueryManager.GetGlobalCondition(conditionFilter);

            if (conditionFilterResult != null)
            {
                conditionFilterResult.AppendTo(joinQuery);
            }
            //subqueries
            if (!joinQuery.Subqueries.IsNullOrEmpty())
            {
                foreach (var squery in joinQuery.Subqueries)
                {
                    AppendSubqueryCondition(squery, conditionFilter);
                }
            }
            //join query
            if (!joinQuery.JoinItems.IsNullOrEmpty())
            {
                foreach (var jitem in joinQuery.JoinItems)
                {
                    AppendJoinQueryCondition(jitem.JoinQuery, conditionFilter);
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Append repository condition
        /// </summary>
        /// <param name="originalQuery">Original query</param>
        /// <returns>Return the newest query object</returns>
        IQuery AppendRepositoryCondition(IQuery originalQuery, QueryUsageScene usageScene)
        {
            if (originalQuery == null)
            {
                originalQuery = QueryManager.Create();
                originalQuery.SetEntityType(entityType);
            }
            else
            {
                originalQuery.SetEntityType(entityType);
            }

            //primary query
            GlobalConditionFilter conditionFilter = new GlobalConditionFilter()
            {
                OriginalQuery        = originalQuery,
                UsageSceneEntityType = entityType,
                EntityType           = entityType,
                SourceType           = QuerySourceType.Repository,
                UsageScene           = usageScene
            };
            var conditionFilterResult = QueryManager.GetGlobalCondition(conditionFilter);

            if (conditionFilterResult != null)
            {
                conditionFilterResult.AppendTo(originalQuery);
            }
            //subqueries
            if (!originalQuery.Subqueries.IsNullOrEmpty())
            {
                foreach (var squery in originalQuery.Subqueries)
                {
                    AppendSubqueryCondition(squery, conditionFilter);
                }
            }
            //join
            if (!originalQuery.JoinItems.IsNullOrEmpty())
            {
                foreach (var jitem in originalQuery.JoinItems)
                {
                    AppendJoinQueryCondition(jitem.JoinQuery, conditionFilter);
                }
            }
            return(originalQuery);
        }