Example #1
0
        /// <summary>
        /// 翻译查询
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="query"></param>
        /// <param name="queryCompiler"></param>
        public virtual void TranslateQuery(OrmObjectInfo obj, QueryInfo query, QueryCompilerInfo queryCompiler)
        {
            var table = new TableInfo {
                Joins = new Dictionary <string, JoinInfo>()
            };
            var selectComplier = new QueryCompilerInfo(obj, query.SelectExp, table, null)
            {
                Query = query, TranslateQuery = TranslateQuery
            };
            var groupbyComplier = new QueryCompilerInfo(obj, query.GroupByExp, table, null)
            {
                Query = query
            };
            var orderbyComplier = new QueryCompilerInfo(obj, query.OrderByExp, table, null)
            {
                Query = query
            };
            var whereComplier = new WhereCompilerInfo(obj, query.WhereExp, table, null)
            {
                Query = query
            };
            var havingComplier = new WhereCompilerInfo(obj, query.HavingExp, table, null)
            {
                Query = query
            };

            SelectCompiler.Translate(selectComplier);
            WhereCompiler.Translate(whereComplier);
            GroupbyCompiler.Translate(groupbyComplier);
            HavingCompiler.Translate(havingComplier);
            OrderbyCompiler.Translate(orderbyComplier);
            if (queryCompiler != null && !string.IsNullOrEmpty(queryCompiler.Chainon))
            {
                if (whereComplier.Builder.Length > 0)
                {
                    whereComplier.Builder.Append(" and ");
                }
                whereComplier.Builder.Append(string.Format(queryCompiler.Chainon, table.AsName));
            }
            var tableSql = selectComplier.GetJoinTable(query);

            query.Sql = GetSql(obj, selectComplier, tableSql, whereComplier, groupbyComplier, orderbyComplier,
                               havingComplier, query);
        }
Example #2
0
        /// <summary>
        /// 拼接自定义条件
        /// </summary>
        /// <param name="saveCompile"></param>
        /// <param name="where"></param>
        protected virtual void AppendCustomerWhere(SaveCompilerInfo saveCompile, StringBuilder where)
        {
            var whereCompile = new WhereCompilerInfo(saveCompile.SaveInfo.Object,
                                                     saveCompile.SaveInfo.Information.WhereExp, new TableInfo {
                Joins = new Dictionary <string, JoinInfo>()
            },
                                                     new StringBuilder(), true, saveCompile)
            {
                Query = new QueryInfo {
                    Object = saveCompile.SaveInfo.Object, Parameters = saveCompile.SaveInfo.Information.Parameters
                }
            };

            WhereCompiler.Translate(whereCompile);
            if (whereCompile.Query.SqlParameters != null)
            {
                foreach (var sqlParameter in whereCompile.Query.SqlParameters)
                {
                    AddParamter(saveCompile.Command, sqlParameter.Key, sqlParameter.Value);
                }
            }
            where.Append(whereCompile.Builder);
            saveCompile.IsSaveParameters = true;
        }