示例#1
0
        public ExpressionSqlCore <T> Insert(Expression <Func <object> > exp)
        {
            var sql = InsertHandle();

            ExpressionVisit.Insert(exp.Body, _sqlCaluse);
            _sqlCaluse.Sql.AppendFormat(sql, _sqlCaluse.SelectedFieldString, _sqlCaluse.ParamString);
            return(this);
        }
示例#2
0
        private void JoinHandle <T1>(string joinType, Expression exp)
        {
            var joinTable = typeof(T1);

            _sqlCaluse.SetTableAlias(joinTable);
            var tableName = _sqlCaluse.GetTableName(joinTable);

            _sqlCaluse += $"{joinType} JOIN {tableName} {_sqlCaluse.GetTableAlias(joinTable).Replace(".", "")}";
            ExpressionVisit.Join(exp, _sqlCaluse);
        }
示例#3
0
        private void UpdateHandle(Expression body, Expression pkExp = null)
        {
            _sqlCaluse.EnableTableAlia = false;
            var tableName = _sqlCaluse.GetTableName(typeof(T));

            _sqlCaluse += $" UPDATE {tableName} SET \n";
            if (null != pkExp)
            {
                ExpressionVisit.PrimaryKey(pkExp, _sqlCaluse);
            }
            ExpressionVisit.Update(body, _sqlCaluse);
        }
示例#4
0
 private void OrderByHandle(Expression exp)
 {
     if (_firstOrderby)
     {
         _sqlCaluse   += "\n ORDER BY ";
         _firstOrderby = false;
     }
     else
     {
         _sqlCaluse += " ,";
     }
     ExpressionVisit.OrderBy(exp, _sqlCaluse);
 }
示例#5
0
        private void MaxHandle(Expression body)
        {
            var tbType = typeof(T);
            var tbName = _sqlCaluse.GetTableName(tbType);

            _sqlCaluse.SetTableAlias(tbType);
            var alia = _sqlCaluse.GetTableAlias(tbType).Replace(".", "");

            ExpressionVisit.Max(body, _sqlCaluse);
            var sql = $" SELECT {{0}} FROM {tbName} {alia}";

            _sqlCaluse.Sql.AppendFormat(sql, _sqlCaluse.SelectMethod.ToString());
        }
示例#6
0
        private void SelectHandle(bool distinct, Expression body, params Type[] arr)
        {
            _sqlCaluse.Clear();
            var sql = distinct ? " SELECT DISTINCT {0}\n FROM " : " SELECT {0}\n FROM ";

            foreach (Type item in arr)
            {
                _sqlCaluse.SetTableAlias(item);
            }
            var mainTable = typeof(T);
            var tableName = _sqlCaluse.GetTableName(mainTable);

            sql = sql + tableName + " " + _sqlCaluse.GetTableAlias(mainTable).Replace(".", "");
            ExpressionVisit.Select(body, _sqlCaluse);
            //var selected = _sqlCaluse.SelectAll ? "*" : _sqlCaluse.SelectedFieldString;
            _sqlCaluse.Sql.AppendFormat(sql, _sqlCaluse.SelectedFieldString);
        }
示例#7
0
 private void WhereHandle(Expression body)
 {
     if (_firstWhere)
     {
         _sqlCaluse += "\n WHERE";
         _firstWhere = false;
     }
     else
     {
         _sqlCaluse += "\n AND";
     }
     _sqlCaluse += "(";
     if (body?.ToString() == "True")
     {
         _sqlCaluse += " 1 == 1 ";
     }
     else
     {
         ExpressionVisit.Where(body, _sqlCaluse);
     }
     _sqlCaluse += ")";
 }
示例#8
0
 private void GroupByHandle(Expression body)
 {
     ExpressionVisit.GroupBy(body, _sqlCaluse);
     _sqlCaluse += "\n GROUP BY " + _sqlCaluse.GroupByFieldString;
 }