Ejemplo n.º 1
0
        public Expression2SqlCore <T> Select <T2, T3, T4, T5, T6, T7, T8, T9, T10>(Expression <Func <T, T2, T3, T4, T5, T6, T7, T8, T9, T10, object> > expression = null)
        {
            PropertyInfoCache.InitCacheInfo <T2>();
            PropertyInfoCache.InitCacheInfo <T3>();
            PropertyInfoCache.InitCacheInfo <T4>();
            PropertyInfoCache.InitCacheInfo <T5>();
            PropertyInfoCache.InitCacheInfo <T6>();
            PropertyInfoCache.InitCacheInfo <T7>();
            PropertyInfoCache.InitCacheInfo <T8>();
            PropertyInfoCache.InitCacheInfo <T9>();
            PropertyInfoCache.InitCacheInfo <T10>();

            string sql = SelectParser(typeof(T), typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10));

            if (expression == null)
            {
                this._sqlPack.Sql.AppendFormat(sql, "*");
            }
            else
            {
                Expression2SqlProvider.Select(expression.Body, this._sqlPack);
                this._sqlPack.Sql.AppendFormat(sql, this._sqlPack.SelectFieldsStr);
            }

            return(this);
        }
Ejemplo n.º 2
0
        private Expression2SqlCore <T> JoinParser2 <T2, T3>(Expression <Func <T2, T3, bool> > expression, string leftOrRightJoin = "")
        {
            PropertyInfoCache.InitCacheInfo <T2>();
            PropertyInfoCache.InitCacheInfo <T3>();
            string joinTableName = PropertyInfoCache.GetTableName(typeof(T3).FullName);// typeof(T3).Name;

            this._sqlPack.SetTableAlias(joinTableName);
            this._sqlPack.Sql.AppendFormat("\n{0}join {1} on", leftOrRightJoin, joinTableName + " " + this._sqlPack.GetTableAlias(joinTableName));
            Expression2SqlProvider.Join(expression.Body, this._sqlPack);
            return(this);
        }
        protected override SqlPack Select(MemberExpression expression, SqlPack sqlPack)
        {
            sqlPack.SetTableAlias(PropertyInfoCache.GetTableName(expression.Member.DeclaringType.FullName));
            string tableAlias = sqlPack.GetTableAlias(PropertyInfoCache.GetTableName(expression.Member.DeclaringType.FullName));

            if (!string.IsNullOrWhiteSpace(tableAlias))
            {
                tableAlias += ".";
            }
            sqlPack.SelectFields.Add(tableAlias + PropertyInfoCache.GetFieldName(expression.Member.DeclaringType.FullName, expression.Member.Name));
            return(sqlPack);
        }
Ejemplo n.º 4
0
        private string SelectParser(params Type[] ary)
        {
            this._sqlPack.Clear();
            this._sqlPack.IsSingleTable = false;

            foreach (var item in ary)
            {
                string tableName = PropertyInfoCache.GetTableName(item.FullName);                // item.Name;
                this._sqlPack.SetTableAlias(tableName);
            }

            return("select {0}\nfrom " + ModelCache <T> ._TableName + " " + this._sqlPack.GetTableAlias(ModelCache <T> ._TableName));
        }
Ejemplo n.º 5
0
        public Expression2SqlCore <T> Select <T2>(Expression <Func <T, T2, object> > expression = null)
        {
            PropertyInfoCache.InitCacheInfo <T2>();
            string sql = SelectParser(typeof(T), typeof(T2));

            if (expression == null)
            {
                this._sqlPack.Sql.AppendFormat(sql, "*");
            }
            else
            {
                Expression2SqlProvider.Select(expression.Body, this._sqlPack);
                this._sqlPack.Sql.AppendFormat(sql, this._sqlPack.SelectFieldsStr);
            }

            return(this);
        }
Ejemplo n.º 6
0
        public Expression2SqlCore <T> Select(Expression <Func <T, object> > expression = null)
        {
            string sql = SelectParser(typeof(T));

            if (expression == null)
            {
                //this._sqlPack.Sql.AppendFormat(sql, "*");
                var fields = PropertyInfoCache.FieldNameAsPropertyName(typeof(T).FullName);
                this._sqlPack.Sql.AppendFormat(sql, fields);
            }
            else
            {
                Expression2SqlProvider.Select(expression.Body, this._sqlPack);
                this._sqlPack.Sql.AppendFormat(sql, this._sqlPack.SelectFieldsStr);
            }

            return(this);
        }
        protected override SqlPack Where(MemberExpression expression, SqlPack sqlPack)
        {
            // DateTime dateTime = new DateTime(2012, 1, 1);
            // Where(u => u.TransDate > dateTime)
            if (expression.Expression != null && expression.Expression.NodeType is ExpressionType.Constant && expression.Member.MemberType == MemberTypes.Field)
            {
                var paramValue = ((ConstantExpression)expression.Expression).Value;
                var param      = paramValue.GetType().GetField(expression.Member.Name).GetValue(paramValue);

                sqlPack.AddDbParameter(param);
                return(sqlPack);
            }

            // Bill bill = new Bill();
            // bill.TransDate = dateTime;
            // Where(u => u.TransDate > bill.TransDate)
            if (expression.Expression != null && expression.Expression.NodeType is ExpressionType.MemberAccess && expression.Member.MemberType == MemberTypes.Property)
            {
                var objExpression = (MemberExpression)expression.Expression;
                var objValue      = ((ConstantExpression)objExpression.Expression).Value;

                // bill
                var obj = objValue.GetType().GetField(objExpression.Member.Name).GetValue(objValue);
                // bill.TransDate
                var param = obj.GetType().GetProperty(expression.Member.Name).GetValue(obj);

                sqlPack.AddDbParameter(param);
                return(sqlPack);
            }

            sqlPack.SetTableAlias(PropertyInfoCache.GetTableName(expression.Member.DeclaringType.FullName));
            string tableAlias = sqlPack.GetTableAlias(PropertyInfoCache.GetTableName(expression.Member.DeclaringType.FullName));

            if (!string.IsNullOrWhiteSpace(tableAlias))
            {
                tableAlias += ".";
            }
            sqlPack += " " + tableAlias + PropertyInfoCache.GetFieldName(expression.Member.DeclaringType.FullName, expression.Member.Name);

            return(sqlPack);
        }
 protected override SqlPack Sum(MemberExpression expression, SqlPack sqlPack)
 {
     sqlPack.Sql.AppendFormat("select sum({0}) from {1}", PropertyInfoCache.GetFieldName(expression.Member.DeclaringType.FullName, expression.Member.Name), PropertyInfoCache.GetTableName(expression.Member.DeclaringType.FullName));
     return(sqlPack);
 }
 protected override SqlPack OrderBy(MemberExpression expression, SqlPack sqlPack)
 {
     sqlPack.SetTableAlias(PropertyInfoCache.GetTableName(expression.Member.DeclaringType.FullName));
     sqlPack += sqlPack.GetTableAlias(PropertyInfoCache.GetTableName(expression.Member.DeclaringType.FullName)) + "." + PropertyInfoCache.GetFieldName(expression.Member.DeclaringType.FullName, expression.Member.Name);
     return(sqlPack);
 }
Ejemplo n.º 10
0
 static Expression2SqlCore()
 {
     PropertyInfoCache.InitCacheInfo <T>();
 }
Ejemplo n.º 11
0
 public Expression2SqlCore <T> FullJoin <T2, T3>(Expression <Func <T2, T3, bool> > expression)
 {
     PropertyInfoCache.InitCacheInfo <T2>();
     PropertyInfoCache.InitCacheInfo <T3>();
     return(JoinParser2(expression, "full "));
 }
Ejemplo n.º 12
0
 public Expression2SqlCore <T> RightJoin <T2>(Expression <Func <T, T2, bool> > expression)
 {
     PropertyInfoCache.InitCacheInfo <T2>();
     return(JoinParser(expression, "right "));
 }
 protected override SqlPack Count(MemberExpression expression, SqlPack sqlPack)
 {
     sqlPack.Sql.AppendFormat("SELECT COUNT({0}) FROM {1}", PropertyInfoCache.GetFieldName(expression.Member.DeclaringType.FullName, expression.Member.Name), PropertyInfoCache.GetTableName(expression.Member.DeclaringType.FullName));
     return(sqlPack);
 }