Esempio n. 1
0
        /// <summary>
        /// Renders the query.
        /// </summary>
        /// <param name="supressEndStatement">True if you want to supress statement terminating characters (semicolon)</param>
        /// <returns></returns>
        public SqlStatement Render(bool supressEndStatement)
        {
            var writer = new SqlTextWriter()
            {
                Format = this.GenerateFormattedSql
            };
            var args = new SqlBuildArguments();

            this.CompileInternal(args);

            if (this.Prefix != null)
            {
                writer.Write(this.Prefix);
                if (!supressEndStatement)
                {
                    writer.WriteEndStatement();
                }
            }

            this.RenderInternal(writer, args);

            if (!supressEndStatement)
            {
                writer.WriteEndStatement();
            }

            if (this.Suffix != null)
            {
                writer.Write(this.Suffix);
                if (!supressEndStatement)
                {
                    writer.WriteEndStatement();
                }
            }

            return(new SqlStatement(writer.ToString(), args.Parameters));
        }
Esempio n. 2
0
        /// <summary>
        /// Renders each of the given elements into a single statement. This can be used to execute a batch.
        /// </summary>
        /// <param name="elements"></param>
        /// <returns></returns>
        public static SqlStatementBatch RenderBatch(this IEnumerable <ISqlStatementElement> elements)
        {
            var writer = new SqlTextWriter();
            var args   = new SqlBuildArguments();
            int count  = 0;

            foreach (var element in elements)
            {
                count++;
                element.Render(writer, args);
                writer.WriteEndStatement();
                writer.WriteLine();
            }

            return(new SqlStatementBatch(count, writer.ToString(), args.Parameters));
        }