internal void SelectColumns(IEnumerable <string> columns)
        {
            var tableAlias = GetTableAlias();
            var sqlClause  = Clauses.FirstOrDefault();

            if (sqlClause.Name == "SELECT")
            {
                sqlClause.InputText = string.Join(",", columns.Select(c => string.Format("{0}.{1}", tableAlias, c)));
            }
        }
        internal void ChangeToInsert <T>(string tableName, Expression <Func <T, object> > insertObjectExpression)
        {
            Validate();
            var    sqlSelectClause       = Clauses.FirstOrDefault();
            string columnsToInsert       = string.Join(",", insertObjectExpression.GetObjectProperties());
            string insertValueExpression = string.Format("INTO {0} ({1})", tableName, columnsToInsert);

            Clauses.Insert(0, new SqlClause {
                Name = "INSERT", InputText = insertValueExpression
            });
            sqlSelectClause.InputText = columnsToInsert;
        }
        public void ChangeToDelete()
        {
            Validate();
            var sqlClause     = Clauses.FirstOrDefault();
            var sqlFromClause = Clauses.First(o => o.Name == "FROM");

            if (sqlClause != null)
            {
                sqlClause.Name      = "DELETE";
                sqlClause.InputText = sqlFromClause.InputText.Substring(sqlFromClause.InputText.LastIndexOf("AS ") + 3);
            }
        }
        public void ChangeToUpdate(string updateExpression, string setExpression)
        {
            Validate();
            var sqlClause = Clauses.FirstOrDefault();

            if (sqlClause != null)
            {
                sqlClause.Name      = "UPDATE";
                sqlClause.InputText = updateExpression;
                Clauses.Insert(1, new SqlClause {
                    Name = "SET", InputText = setExpression
                });
            }
        }
示例#5
0
        public override string ToString()
        {
            var strSql = new StringBuilder();

            var select = Clauses.FirstOrDefault(c => c is SqlSelectClause <T>);

            var where = Clauses.FirstOrDefault(c => c is SqlWhereClause);
            var groupBy = Clauses.FirstOrDefault(c => c is SqlGroupByClause);
            var having  = Clauses.FirstOrDefault(c => c is SqlHavingClause);
            var orderBy = Clauses.FirstOrDefault(c => c is SqlOrderByClause);
            var offset  = Clauses.FirstOrDefault(c => c is SqlRowOffsetClause);
            var fetch   = Clauses.FirstOrDefault(c => c is SqlRowFetchNextClause);

            if (select != null)
            {
                strSql.Append($"{select}");
            }
            if (where != null)
            {
                strSql.Append($" {where}");
            }

            if (groupBy != null)
            {
                strSql.Append($" {groupBy}");
                if (having != null)
                {
                    strSql.Append($" {having}");
                }
            }

            if (orderBy == null)
            {
                orderBy = new SqlOrderByClause(Expression.Constant(1));
            }

            strSql.Append($" {orderBy}");

            if (offset != null)
            {
                strSql.Append($" {offset}");
                if (fetch != null)
                {
                    strSql.Append($" {fetch}");
                }
            }

            return(strSql.ToString());
        }
示例#6
0
        public override string ToString()
        {
            var sql = Clauses.FirstOrDefault(c => c is SqlRawClause);

            return(sql.ToString());
        }
示例#7
0
 private SqlStatement GetStatement() => Clauses.FirstOrDefault() as SqlStatement;