Пример #1
0
        public Tuple <string, QueryParam> BuildSqlString(SqlDialect dialect, int seed)
        {
            QueryParam    parameter = null;
            StringBuilder sql       = new StringBuilder();

            if (!string.IsNullOrWhiteSpace(TableAlias))
            {
                sql.AppendFormat("{0}.{1} ", TableAlias, LeftColumn);
            }
            else
            {
                sql.AppendFormat("{0} ", LeftColumn);
            }

            string op = null;

            switch (BinaryOperation)
            {
            case ComparisonOperator.Equal:
                op = "=";
                break;

            case ComparisonOperator.GreaterOrEquals:
                op = ">=";
                break;

            case ComparisonOperator.GreaterThan:
                op = ">";
                break;

            case ComparisonOperator.In:
                op = "IN";
                break;

            case ComparisonOperator.IsNotNull:
                op = "IS NOT NULL";
                break;

            case ComparisonOperator.IsNull:
                op = "IS NULL";
                break;

            case ComparisonOperator.Like:
                op = "LIKE";
                break;

            case ComparisonOperator.LikeNonCaseSensitive:
                op = dialect.PrintCaseIncensitiveLike();
                break;

            case ComparisonOperator.LowerOrEquals:
                op = "<=";
                break;

            case ComparisonOperator.LowerThan:
                op = "<";
                break;

            case ComparisonOperator.NotEqual:
                op = "<>";
                break;

            case ComparisonOperator.NotLike:
                op = "NOT LIKE";
                break;
            }

            sql.AppendFormat("{0} ", op);
            if (!string.IsNullOrWhiteSpace(RightColumn))
            {
                if (!string.IsNullOrWhiteSpace(RightColumnTableAlias))
                {
                    sql.AppendFormat("{0}.{1} ", RightColumnTableAlias, RightColumn);
                }
                else
                {
                    sql.AppendFormat("{0} ", RightColumn);
                }
            }
            else if (ParamValue != null)
            {
                string paramName = string.Format("qPm{0}", seed);
                parameter = new QueryParam(paramName, PropDbType)
                {
                    Value = ParamValue
                };
                sql.Append(dialect.CreateParameterName(paramName));
            }

            return(Tuple.Create <string, QueryParam>(sql.ToString(), parameter));
        }