예제 #1
0
파일: SqlClause.cs 프로젝트: xym000/FoxOne
        public override bool ToCommand(IDaoProvider provider, SqlCommandBuilder builder, ISqlParameters parameters)
        {
            string sqlName = provider.EscapeParam(ParamName);

            builder.AppendCommandText(RawText.Replace(ParamName, sqlName));
            builder.AddCommandParameter(sqlName, parameters.Resolve(ParamName));

            return(true);
        }
예제 #2
0
파일: SqlClause.cs 프로젝트: xym000/FoxOne
        public override bool ToCommand(IDaoProvider provider, SqlCommandBuilder builder, ISqlParameters parameters)
        {
            if (_paramClause != null)
            {
                object value;

                bool exist = parameters.TryResolve(_paramClause.ParamName, out value);

                if (!_strict && (null == value || (value is string && string.IsNullOrEmpty(value as string))))
                {
                    return(false);
                }

                if (_strict && !exist)
                {
                    return(false);
                }
            }

            if (_foundNestedDynamicClause)
            {
                bool anyNestedDynamicClauseExecuted = false;

                SqlCommandBuilder nestedBuilder = new SqlCommandBuilder();

                foreach (SqlClause clause in _childs)
                {
                    if (clause.ToCommand(provider, nestedBuilder, parameters) && clause is DynamicClause)
                    {
                        anyNestedDynamicClauseExecuted = true;
                    }
                }

                //只有任何一个嵌套的动态语句被执行了才进行输出
                if (anyNestedDynamicClauseExecuted)
                {
                    builder.AppendCommandText(nestedBuilder.CommandText.ToString());
                    nestedBuilder.Params.ForEach(p => builder.AddCommandParameter(p));
                }

                return(anyNestedDynamicClauseExecuted);
            }
            else
            {
                foreach (SqlClause clause in _childs)
                {
                    clause.ToCommand(provider, builder, parameters);
                }

                return(true);
            }
        }