示例#1
0
        private static string Dump(Sql defaultSql)
        {
            var sql = defaultSql.Clone();

            if (SequelSettings.QueryTemplateEnabled)
            {
                sql.ApplyTemplate();
            }

            var text  = sql.ToString().Beautify();
            var lines = text.Split('\n', '\r').Where(x => !string.IsNullOrWhiteSpace(x));

            var builder = new StringBuilder();

            builder.AppendLine("Sql {");
            builder.AppendLine("  Text {");
            foreach (var line in lines)
            {
                builder.Append("    ");
                builder.AppendLine(line);
            }
            builder.AppendLine("  }");
            builder.AppendLine("  Args {");
            foreach (var parameter in sql.ParameterNames)
            {
                var value = Commander.CreateSqlCompatibleValue(sql[parameter]);
                builder.Append("    ");
                builder.Append(parameter);
                builder.Append(" := ");
                builder.AppendLine(value is DBNull ? "(null)" : $"\"{value}\"");
            }
            builder.AppendLine("  }");
            builder.AppendLine("}");
            return(builder.ToString());
        }
示例#2
0
        private static string Dump(Sql defaultSql)
        {
            var sql = defaultSql.Clone();

            if (SequelSettings.QueryTemplateEnabled)
            {
                sql.ApplyTemplate();
            }

            var text  = sql.Beautify().ToString();
            var lines = text.Split('\n', '\r').Where(x => !string.IsNullOrWhiteSpace(x));

            var builder = new StringBuilder();

            builder.AppendLine("Sql {");
            builder.AppendLine("  Text {");
            foreach (var line in lines)
            {
                builder.Append("    ");
                builder.AppendLine(line);
            }
            builder.AppendLine("  }");
            builder.AppendLine("  Args {");
            foreach (var parameter in sql.ParameterNames)
            {
                builder.Append("    ");
                builder.Append(string.IsNullOrEmpty(parameter) ? "{many}" : parameter);
                builder.Append(" := ");

                var value = sql[parameter];
                var var   = value as Var;
                if (var?.IsRange == true)
                {
                    builder.AppendLine($"{var.Range}");
                }
                else if (var?.IsArray == true)
                {
                    var items    = var.Array.Cast <object>();
                    var item     = items.FirstOrDefault();
                    var isMany   = item.IsEnumerable();
                    var isBinary = item is byte;
                    var isEmpty  = !items.Any();

                    if (isEmpty)
                    {
                        builder.AppendLine("null");
                    }
                    else if (isMany)
                    {
                        builder.AppendLine("{ ... }");
                    }
                    else if (isBinary)
                    {
                        builder.AppendLine("binary");
                    }
                    else
                    {
                        value = Commander.CreateSqlCompatibleValue(value);
                        builder.AppendLine($"{{ {value} }}");
                    }
                }
                else
                {
                    value = Commander.CreateSqlCompatibleValue(value);
                    builder.AppendLine(value is DBNull ? "(null)" : $"\"{value}\"");
                }
            }
            builder.AppendLine("  }");
            builder.AppendLine("}");
            return(builder.ToString());
        }