コード例 #1
0
        /// <summary>
        /// 转换为无参where语句
        /// </summary>
        /// <param name="tableFieldInfoDic">表字段字典集合[key:表名;value:[key:字段名;value:DBFieldInfo]]</param>
        /// <param name="tableAliaNameDic">表别名字典集合[key:列名;value:别名]</param>
        /// <param name="filedValueConverterCollection">数据库字段值转换对象集合</param>
        /// <param name="fieldValueFormator">字段值格式化对象</param>
        /// <returns>where语句</returns>
        public string ToWhereNoParameter(Dictionary <string, Dictionary <string, DBFieldInfo> > tableFieldInfoDic, Dictionary <string, string> tableAliaNameDic,
                                         DBFiledValueConverterCollection filedValueConverterCollection, ISqlFieldValueFormator fieldValueFormator)
        {
            var sbSql = new StringBuilder();
            var para  = new ConditionValueNoSqlParaGeneratorPara(sbSql, fieldValueFormator);

            this.CreateQueryFieldWhereSqlNoParameter(para, tableAliaNameDic,
                                                     tableFieldInfoDic, this, filedValueConverterCollection);
            return(sbSql.ToString());
        }
コード例 #2
0
        private void CreateQueryFieldWhereSqlNoParameter(ConditionValueNoSqlParaGeneratorPara para,
                                                         Dictionary <string, string> tableAliaNameDic, Dictionary <string, Dictionary <string, DBFieldInfo> > tableFieldInfoDic,
                                                         ExpressionNodeCollection conditionExpressionNodes, DBFiledValueConverterCollection dbFiledValueConverterCollection)
        {
            if (conditionExpressionNodes == null || conditionExpressionNodes.Count == 0)
            {
                return;
            }

            ExpressionNodeCollection childrenConditionExpressionNodes;
            DBFieldInfo dbFieldInfo;
            CompareOperaterAttribute compareOperaterAttribute;
            int lastIndex = conditionExpressionNodes.Count - 1;

            for (int i = 0; i < conditionExpressionNodes.Count; i++)
            {
                var expressionNode = conditionExpressionNodes.ElementAt(i);
                childrenConditionExpressionNodes = expressionNode.Children;
                if (childrenConditionExpressionNodes == null || childrenConditionExpressionNodes.Count == 0)
                {
                    //无子节点
                    dbFieldInfo                = tableFieldInfoDic[expressionNode.TableName][expressionNode.FieldName];
                    para.FieldInfo             = dbFieldInfo;
                    para.DBFiledValueConverter = dbFiledValueConverterCollection.GetDBFiledValueConverter(dbFieldInfo);
                    if (tableAliaNameDic.ContainsKey(expressionNode.TableName))
                    {
                        para.TableAliaName = tableAliaNameDic[expressionNode.TableName];
                    }
                    else
                    {
                        para.TableAliaName = expressionNode.TableName;
                    }

                    para.ValueList           = expressionNode.ValueList;
                    para.Operater            = expressionNode.Operater;
                    compareOperaterAttribute = CompareOperaterHelper.GetCompareOperaterAttributeByCompareOperater(expressionNode.Operater);
                    compareOperaterAttribute.ConditionValueGenerator.GenerateNoPara(para);

                    if (i < lastIndex)
                    {
                        para.SqlStringBuilder.Append(DBConstant.BLACK_SPACE);
                        para.SqlStringBuilder.Append(conditionExpressionNodes.LogicOperaters.ToString());
                        para.SqlStringBuilder.Append(DBConstant.BLACK_SPACE);
                    }
                }
                else
                {
                    //有子节点
                    para.SqlStringBuilder.Append('(');
                    this.CreateQueryFieldWhereSqlNoParameter(para, tableAliaNameDic,
                                                             tableFieldInfoDic, childrenConditionExpressionNodes, dbFiledValueConverterCollection);
                    para.SqlStringBuilder.Append(')');
                }
            }
        }