Ejemplo n.º 1
0
        /// <summary>
        /// SQL文を生成する
        /// </summary>
        /// <param name="context">生成先のコンテキスト</param>
        public void ToElementCode(ElementCode context)
        {
            var delayedCode = new DelayedCodeGenerator((wb) => {
                var ec = new ElementCode();
                ec.BeginParenthesize();
                ec.Add(SqlKeyword.Values);
                var list = this.List;
                for (int i = 0, n = list.Count; i < n; i++)
                {
                    if (i != 0)
                    {
                        ec.AddComma();
                    }
                    ec.BeginParenthesize();
                    ec.AddValues <TColumns>(list[i]);
                    ec.EndParenthesize();
                }
                ec.EndParenthesize();
                ec.Add(this);
                ec.BeginParenthesize();
                ec.AddColumns(this.ColumnMap, column => ec.Concat(column.Name));
                ec.EndParenthesize();
                ec.Build(wb);
            });

            context.Add(delayedCode);
            context.RegisterBuildHandler(this, (item, wb) => {
                // delayedCode 内でエイリアス名付与するので、既存の処理をオーバーライドし何もしないようにする
            });
        }
Ejemplo n.º 2
0
        /// <summary>
        /// SQL文を生成する
        /// </summary>
        /// <param name="context">生成先のコンテキスト</param>
        public void ToElementCode(ElementCode context)
        {
            int i = 0;

            context.Add(SqlKeyword.Select);
            context.AddColumns(this.ColumnMap, column => {
                context.Add(column.Source);
                context.Add(SqlKeyword.As);
                context.Concat("c" + (i++));
            });
        }
Ejemplo n.º 3
0
        public void ToElementCode(ElementCode context)
        {
            // SELECT 部分作成
            int i = 0;

            context.Add(SqlKeyword.Select);
            context.AddColumns(this.ColumnMap, column => {
                context.Add(column.Source);
                context.Add(SqlKeyword.As);
                context.Concat("c" + (i++));
            });

            // WHERE 部分作成
            if (this.WhereNode != null)
            {
                this.WhereNode.ToElementCode(context);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// SQL文を生成する
        /// </summary>
        /// <param name="context">生成先のコンテキスト</param>
        public void ToElementCode(ElementCode context)
        {
            if (this.FromNode == null)
            {
                throw new ApplicationException();
            }

            // SELECT 部作成
            int i = 0;

            context.Add(SqlKeyword.Select);
            context.AddColumns(this.ColumnMap, column => {
                context.Add(column.Source);
                context.Add(SqlKeyword.As);
                context.Concat("c" + (i++));
            });

            // FROM 部作成
            this.FromNode.ToElementCode(context);
        }
Ejemplo n.º 5
0
 /// <summary>
 /// SQL文を生成する
 /// </summary>
 /// <param name="context">生成先のコンテキスト</param>
 public void ToElementCode(ElementCode context)
 {
     context.Add(SqlKeyword.GroupBy);
     context.AddColumns(this.Columns);
 }