@@ -25,9 +25,19 @@ public Select1Provider(IFreeSql orm, CommonUtils commonUtils, CommonExpression c
2525
2626 }
2727
28- protected ISelect < T1 > InternalFrom ( Expression exp )
28+ protected ISelect < T1 > InternalFrom ( LambdaExpression lambdaExp )
2929 {
30- if ( exp . NodeType == ExpressionType . Call )
30+ if ( lambdaExp != null )
31+ {
32+ for ( var a = 1 ; a < lambdaExp . Parameters . Count ; a ++ )
33+ {
34+ var tb = _commonUtils . GetTableByEntity ( lambdaExp . Parameters [ a ] . Type ) ;
35+ if ( tb == null ) throw new ArgumentException ( $ "{ lambdaExp . Parameters [ a ] . Name } 类型错误") ;
36+ _tables . Add ( new SelectTableInfo { Table = tb , Alias = lambdaExp . Parameters [ a ] . Name , On = null , Type = SelectTableInfoType . From } ) ;
37+ }
38+ }
39+ var exp = lambdaExp ? . Body ;
40+ if ( exp ? . NodeType == ExpressionType . Call )
3141 {
3242 var expCall = exp as MethodCallExpression ;
3343 var stockCall = new Stack < MethodCallExpression > ( ) ;
@@ -106,15 +116,15 @@ public Task<TMember> AvgAsync<TMember>(Expression<Func<T1, TMember>> column)
106116 return this . InternalAvgAsync < TMember > ( column ? . Body ) ;
107117 }
108118
109- public abstract ISelect < T1 , T2 > From < T2 > ( Expression < Func < ISelectFromExpression < T1 > , T2 , ISelectFromExpression < T1 > > > exp ) where T2 : class ; // { this.InternalFrom(exp?.Body ); var ret = new Select3Provider<T1, T2, T3>(_orm, _commonUtils, _commonExpression, null); Select0Provider<ISelect<T1>, T1>.CopyData(this, ret, exp?.Parameters); return ret; }
110- public abstract ISelect < T1 , T2 , T3 > From < T2 , T3 > ( Expression < Func < ISelectFromExpression < T1 > , T2 , T3 , ISelectFromExpression < T1 > > > exp ) where T2 : class where T3 : class ; // { this.InternalFrom(exp?.Body ); var ret = new Select3Provider<T1, T2, T3>(_orm, _commonUtils, _commonExpression, null); Select0Provider<ISelect<T1>, T1>.CopyData(this, ret, exp?.Parameters); return ret; }
111- public abstract ISelect < T1 , T2 , T3 , T4 > From < T2 , T3 , T4 > ( Expression < Func < ISelectFromExpression < T1 > , T2 , T3 , T4 , ISelectFromExpression < T1 > > > exp ) where T2 : class where T3 : class where T4 : class ; // { this.InternalFrom(exp?.Body ); var ret = new Select4Provider<T1, T2, T3, T4>(_orm, _commonUtils, _commonExpression, null); Select0Provider<ISelect<T1>, T1>.CopyData(this, ret, exp?.Parameters); return ret; }
112- public abstract ISelect < T1 , T2 , T3 , T4 , T5 > From < T2 , T3 , T4 , T5 > ( Expression < Func < ISelectFromExpression < T1 > , T2 , T3 , T4 , T5 , ISelectFromExpression < T1 > > > exp ) where T2 : class where T3 : class where T4 : class where T5 : class ; // { this.InternalFrom(exp?.Body ); var ret = new Select5Provider<T1, T2, T3, T4, T5>(_orm, _commonUtils, _commonExpression, null); Select0Provider<ISelect<T1>, T1>.CopyData(this, ret, exp?.Parameters); return ret; }
113- public abstract ISelect < T1 , T2 , T3 , T4 , T5 , T6 > From < T2 , T3 , T4 , T5 , T6 > ( Expression < Func < ISelectFromExpression < T1 > , T2 , T3 , T4 , T5 , T6 , ISelectFromExpression < T1 > > > exp ) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class ; // { this.InternalFrom(exp?.Body ); var ret = new Select6Provider<T1, T2, T3, T4, T5, T6>(_orm, _commonUtils, _commonExpression, null); Select0Provider<ISelect<T1>, T1>.CopyData(this, ret, exp?.Parameters); return ret; }
114- public abstract ISelect < T1 , T2 , T3 , T4 , T5 , T6 , T7 > From < T2 , T3 , T4 , T5 , T6 , T7 > ( Expression < Func < ISelectFromExpression < T1 > , T2 , T3 , T4 , T5 , T6 , T7 , ISelectFromExpression < T1 > > > exp ) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class ; // { this.InternalFrom(exp?.Body ); var ret = new Select7Provider<T1, T2, T3, T4, T5, T6, T7>(_orm, _commonUtils, _commonExpression, null); Select0Provider<ISelect<T1>, T1>.CopyData(this, ret, exp?.Parameters); return ret; }
115- public abstract ISelect < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 > From < T2 , T3 , T4 , T5 , T6 , T7 , T8 > ( Expression < Func < ISelectFromExpression < T1 > , T2 , T3 , T4 , T5 , T6 , T7 , T8 , ISelectFromExpression < T1 > > > exp ) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class ; // { this.InternalFrom(exp?.Body ); var ret = new Select8Provider<T1, T2, T3, T4, T5, T6, T7, T8>(_orm, _commonUtils, _commonExpression, null); Select0Provider<ISelect<T1>, T1>.CopyData(this, ret, exp?.Parameters); return ret; }
116- public abstract ISelect < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 > From < T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 > ( Expression < Func < ISelectFromExpression < T1 > , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , ISelectFromExpression < T1 > > > exp ) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class where T9 : class ; // { this.InternalFrom(exp?.Body ); var ret = new Select9Provider<T1, T2, T3, T4, T5, T6, T7, T8, T9>(_orm, _commonUtils, _commonExpression, null); Select0Provider<ISelect<T1>, T1>.CopyData(this, ret, exp?.Parameters); return ret; }
117- public abstract ISelect < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 > From < T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 > ( Expression < Func < ISelectFromExpression < T1 > , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , ISelectFromExpression < T1 > > > exp ) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class where T9 : class where T10 : class ; // { this.InternalFrom(exp?.Body ); var ret = new Select10Provider<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(_orm, _commonUtils, _commonExpression, null); Select0Provider<ISelect<T1>, T1>.CopyData(this, ret, exp?.Parameters); return ret; }
119+ public abstract ISelect < T1 , T2 > From < T2 > ( Expression < Func < ISelectFromExpression < T1 > , T2 , ISelectFromExpression < T1 > > > exp ) where T2 : class ; // { this.InternalFrom(exp); var ret = new Select3Provider<T1, T2, T3>(_orm, _commonUtils, _commonExpression, null); Select0Provider<ISelect<T1>, T1>.CopyData(this, ret, exp?.Parameters); return ret; }
120+ public abstract ISelect < T1 , T2 , T3 > From < T2 , T3 > ( Expression < Func < ISelectFromExpression < T1 > , T2 , T3 , ISelectFromExpression < T1 > > > exp ) where T2 : class where T3 : class ; // { this.InternalFrom(exp); var ret = new Select3Provider<T1, T2, T3>(_orm, _commonUtils, _commonExpression, null); Select0Provider<ISelect<T1>, T1>.CopyData(this, ret, exp?.Parameters); return ret; }
121+ public abstract ISelect < T1 , T2 , T3 , T4 > From < T2 , T3 , T4 > ( Expression < Func < ISelectFromExpression < T1 > , T2 , T3 , T4 , ISelectFromExpression < T1 > > > exp ) where T2 : class where T3 : class where T4 : class ; // { this.InternalFrom(exp); var ret = new Select4Provider<T1, T2, T3, T4>(_orm, _commonUtils, _commonExpression, null); Select0Provider<ISelect<T1>, T1>.CopyData(this, ret, exp?.Parameters); return ret; }
122+ public abstract ISelect < T1 , T2 , T3 , T4 , T5 > From < T2 , T3 , T4 , T5 > ( Expression < Func < ISelectFromExpression < T1 > , T2 , T3 , T4 , T5 , ISelectFromExpression < T1 > > > exp ) where T2 : class where T3 : class where T4 : class where T5 : class ; // { this.InternalFrom(exp); var ret = new Select5Provider<T1, T2, T3, T4, T5>(_orm, _commonUtils, _commonExpression, null); Select0Provider<ISelect<T1>, T1>.CopyData(this, ret, exp?.Parameters); return ret; }
123+ public abstract ISelect < T1 , T2 , T3 , T4 , T5 , T6 > From < T2 , T3 , T4 , T5 , T6 > ( Expression < Func < ISelectFromExpression < T1 > , T2 , T3 , T4 , T5 , T6 , ISelectFromExpression < T1 > > > exp ) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class ; // { this.InternalFrom(exp); var ret = new Select6Provider<T1, T2, T3, T4, T5, T6>(_orm, _commonUtils, _commonExpression, null); Select0Provider<ISelect<T1>, T1>.CopyData(this, ret, exp?.Parameters); return ret; }
124+ public abstract ISelect < T1 , T2 , T3 , T4 , T5 , T6 , T7 > From < T2 , T3 , T4 , T5 , T6 , T7 > ( Expression < Func < ISelectFromExpression < T1 > , T2 , T3 , T4 , T5 , T6 , T7 , ISelectFromExpression < T1 > > > exp ) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class ; // { this.InternalFrom(exp); var ret = new Select7Provider<T1, T2, T3, T4, T5, T6, T7>(_orm, _commonUtils, _commonExpression, null); Select0Provider<ISelect<T1>, T1>.CopyData(this, ret, exp?.Parameters); return ret; }
125+ public abstract ISelect < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 > From < T2 , T3 , T4 , T5 , T6 , T7 , T8 > ( Expression < Func < ISelectFromExpression < T1 > , T2 , T3 , T4 , T5 , T6 , T7 , T8 , ISelectFromExpression < T1 > > > exp ) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class ; // { this.InternalFrom(exp); var ret = new Select8Provider<T1, T2, T3, T4, T5, T6, T7, T8>(_orm, _commonUtils, _commonExpression, null); Select0Provider<ISelect<T1>, T1>.CopyData(this, ret, exp?.Parameters); return ret; }
126+ public abstract ISelect < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 > From < T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 > ( Expression < Func < ISelectFromExpression < T1 > , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , ISelectFromExpression < T1 > > > exp ) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class where T9 : class ; // { this.InternalFrom(exp); var ret = new Select9Provider<T1, T2, T3, T4, T5, T6, T7, T8, T9>(_orm, _commonUtils, _commonExpression, null); Select0Provider<ISelect<T1>, T1>.CopyData(this, ret, exp?.Parameters); return ret; }
127+ public abstract ISelect < T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 > From < T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 > ( Expression < Func < ISelectFromExpression < T1 > , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , ISelectFromExpression < T1 > > > exp ) where T2 : class where T3 : class where T4 : class where T5 : class where T6 : class where T7 : class where T8 : class where T9 : class where T10 : class ; // { this.InternalFrom(exp); var ret = new Select10Provider<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(_orm, _commonUtils, _commonExpression, null); Select0Provider<ISelect<T1>, T1>.CopyData(this, ret, exp?.Parameters); return ret; }
118128
119129 public ISelectGrouping < TKey , T1 > GroupBy < TKey > ( Expression < Func < T1 , TKey > > columns )
120130 {
0 commit comments