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); }
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); }
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)); }
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); }
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); }
static Expression2SqlCore() { PropertyInfoCache.InitCacheInfo <T>(); }
public Expression2SqlCore <T> FullJoin <T2, T3>(Expression <Func <T2, T3, bool> > expression) { PropertyInfoCache.InitCacheInfo <T2>(); PropertyInfoCache.InitCacheInfo <T3>(); return(JoinParser2(expression, "full ")); }
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); }