diff --git a/.vs/SqlSugar/v14/.suo b/.vs/SqlSugar/v14/.suo index 77cd4487a..bbba319e6 100644 Binary files a/.vs/SqlSugar/v14/.suo and b/.vs/SqlSugar/v14/.suo differ diff --git a/OrmTest/bin/Debug/OrmTest.exe b/OrmTest/bin/Debug/OrmTest.exe index 847d6b351..b26492bbb 100644 Binary files a/OrmTest/bin/Debug/OrmTest.exe and b/OrmTest/bin/Debug/OrmTest.exe differ diff --git a/OrmTest/bin/Debug/OrmTest.pdb b/OrmTest/bin/Debug/OrmTest.pdb index d51e2f7ab..a566fe9e5 100644 Binary files a/OrmTest/bin/Debug/OrmTest.pdb and b/OrmTest/bin/Debug/OrmTest.pdb differ diff --git a/OrmTest/bin/Debug/SqlSugar.dll b/OrmTest/bin/Debug/SqlSugar.dll index ab197d825..e05646c2f 100644 Binary files a/OrmTest/bin/Debug/SqlSugar.dll and b/OrmTest/bin/Debug/SqlSugar.dll differ diff --git a/OrmTest/bin/Debug/SqlSugar.pdb b/OrmTest/bin/Debug/SqlSugar.pdb index 6cdbb95ca..6aab39ccc 100644 Binary files a/OrmTest/bin/Debug/SqlSugar.pdb and b/OrmTest/bin/Debug/SqlSugar.pdb differ diff --git a/OrmTest/obj/Debug/OrmTest.csprojResolveAssemblyReference.cache b/OrmTest/obj/Debug/OrmTest.csprojResolveAssemblyReference.cache index 2693b6783..e275a6b98 100644 Binary files a/OrmTest/obj/Debug/OrmTest.csprojResolveAssemblyReference.cache and b/OrmTest/obj/Debug/OrmTest.csprojResolveAssemblyReference.cache differ diff --git a/OrmTest/obj/Debug/OrmTest.exe b/OrmTest/obj/Debug/OrmTest.exe index 847d6b351..b26492bbb 100644 Binary files a/OrmTest/obj/Debug/OrmTest.exe and b/OrmTest/obj/Debug/OrmTest.exe differ diff --git a/OrmTest/obj/Debug/OrmTest.pdb b/OrmTest/obj/Debug/OrmTest.pdb index d51e2f7ab..a566fe9e5 100644 Binary files a/OrmTest/obj/Debug/OrmTest.pdb and b/OrmTest/obj/Debug/OrmTest.pdb differ diff --git a/SqlSugar/Entities/ExpressionParameter.cs b/SqlSugar/Entities/ExpressionParameter.cs new file mode 100644 index 000000000..2d39c5c57 --- /dev/null +++ b/SqlSugar/Entities/ExpressionParameter.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; +using System.Threading.Tasks; +namespace SqlSugar +{ + public class ExpressionParameter + { + public Expression Expression { get; set; } + public SqlSugarClient DbContext { get; set; } + } +} diff --git a/SqlSugar/Expressions/ExpItems/BaseResolve.cs b/SqlSugar/Expressions/ExpItems/BaseResolve.cs index 2d776b279..48c173263 100644 --- a/SqlSugar/Expressions/ExpItems/BaseResolve.cs +++ b/SqlSugar/Expressions/ExpItems/BaseResolve.cs @@ -8,10 +8,13 @@ namespace SqlSugar public class BaseResolve { protected Expression Expression { get; set; } + protected Expression BaseExpression { get; set; } public ExpressionContext Context { get; set; } public string SqlWhere { get; set; } public bool IsFinished { get; set; } - + public bool? IsLeft { get; set; } + public int ContentIndex { get { return this.Context.Index; } } + public int Index { get; set; } private BaseResolve() { @@ -23,7 +26,9 @@ namespace SqlSugar public BaseResolve Start() { + this.Index++; this.IsFinished = false; + this.BaseExpression = null; Expression exp = this.Expression; if (exp is LambdaExpression) { diff --git a/SqlSugar/Expressions/ExpItems/BinaryExpressionResolve.cs b/SqlSugar/Expressions/ExpItems/BinaryExpressionResolve.cs index d2ed5c1e0..41bb6148e 100644 --- a/SqlSugar/Expressions/ExpItems/BinaryExpressionResolve.cs +++ b/SqlSugar/Expressions/ExpItems/BinaryExpressionResolve.cs @@ -9,6 +9,15 @@ namespace SqlSugar { public BinaryExpressionResolve(Expression exp) : base(exp) { + var expression = this.Expression as BinaryExpression; + base.BaseExpression = expression; + base.IsLeft = true; + base.Expression = expression.Left; + base.Start(); + base.IsLeft = false; + base.Expression = expression.Right; + base.Start(); + base.IsLeft = null; base.Continue(); } } diff --git a/SqlSugar/Expressions/ExpItems/MemberExpressionResolve.cs b/SqlSugar/Expressions/ExpItems/MemberExpressionResolve.cs index 3308d1dda..2bb8c8ef8 100644 --- a/SqlSugar/Expressions/ExpItems/MemberExpressionResolve.cs +++ b/SqlSugar/Expressions/ExpItems/MemberExpressionResolve.cs @@ -10,7 +10,10 @@ namespace SqlSugar { public MemberExpressionResolve(Expression exp) : base(exp) { - + var isLeft = this.IsLeft; + this.IsLeft = null; + var isSingle=base.Context.IsSingle; + var expression = exp as MemberExpression; } } } diff --git a/SqlSugar/Expressions/ExpressionContext.cs b/SqlSugar/Expressions/ExpressionContext.cs index b357c9b4c..e8dc7b4e2 100644 --- a/SqlSugar/Expressions/ExpressionContext.cs +++ b/SqlSugar/Expressions/ExpressionContext.cs @@ -8,20 +8,20 @@ namespace SqlSugar { public class ExpressionContext : ExpResolveAccessory { - private ResolveExpressType type { get; set; } - private Expression expression { get; set; } - private bool IsSingle { get { return this.type == ResolveExpressType.Single; } } + public ResolveExpressType Type { get; set; } + public Expression Expression { get; set; } + public bool IsSingle { get { return this.Type == ResolveExpressType.Single; } } public ExpressionContext(Expression expression, ResolveExpressType type) { - this.type = type; - this.expression = expression; + this.Type = type; + this.Expression = expression; } public string GetFiledName() { string reval = null; - LambdaExpression lambda = this.expression as LambdaExpression; + LambdaExpression lambda = this.Expression as LambdaExpression; var isConvet = lambda.Body.NodeType.IsIn(ExpressionType.Convert); var isMember = lambda.Body.NodeType.IsIn(ExpressionType.MemberAccess); if (!isConvet && !isMember) @@ -56,7 +56,7 @@ namespace SqlSugar public string GetWhere() { - BaseResolve resolve = new BaseResolve(this.expression); + BaseResolve resolve = new BaseResolve(this.Expression); resolve.Context = this; resolve.Start(); return resolve.SqlWhere; @@ -75,5 +75,7 @@ namespace SqlSugar base._Parameters = value; } } + + public int Index { get; set; } } } diff --git a/SqlSugar/SqlSugar.csproj b/SqlSugar/SqlSugar.csproj index 762726e61..0ecabb369 100644 --- a/SqlSugar/SqlSugar.csproj +++ b/SqlSugar/SqlSugar.csproj @@ -97,6 +97,7 @@ + @@ -135,9 +136,6 @@ - - - diff --git a/SqlSugar/bin/Debug/SqlSugar.dll b/SqlSugar/bin/Debug/SqlSugar.dll index ab197d825..e05646c2f 100644 Binary files a/SqlSugar/bin/Debug/SqlSugar.dll and b/SqlSugar/bin/Debug/SqlSugar.dll differ diff --git a/SqlSugar/bin/Debug/SqlSugar.pdb b/SqlSugar/bin/Debug/SqlSugar.pdb index 6cdbb95ca..6aab39ccc 100644 Binary files a/SqlSugar/bin/Debug/SqlSugar.pdb and b/SqlSugar/bin/Debug/SqlSugar.pdb differ diff --git a/SqlSugar/obj/Debug/SqlSugar.csproj.FileListAbsolute.txt b/SqlSugar/obj/Debug/SqlSugar.csproj.FileListAbsolute.txt index c7414cb31..9a47395a4 100644 --- a/SqlSugar/obj/Debug/SqlSugar.csproj.FileListAbsolute.txt +++ b/SqlSugar/obj/Debug/SqlSugar.csproj.FileListAbsolute.txt @@ -3,3 +3,4 @@ F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\SqlSugar\bin\Debug\SqlSugar.pdb F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\SqlSugar\bin\Debug\Newtonsoft.Json.dll F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\SqlSugar\obj\Debug\SqlSugar.dll F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\SqlSugar\obj\Debug\SqlSugar.pdb +F:\MyOpenSource\SqlSugar4.XNew\SqlSugar\SqlSugar\obj\Debug\SqlSugar.csprojResolveAssemblyReference.cache diff --git a/SqlSugar/obj/Debug/SqlSugar.csprojResolveAssemblyReference.cache b/SqlSugar/obj/Debug/SqlSugar.csprojResolveAssemblyReference.cache new file mode 100644 index 000000000..cf78a08b2 Binary files /dev/null and b/SqlSugar/obj/Debug/SqlSugar.csprojResolveAssemblyReference.cache differ diff --git a/SqlSugar/obj/Debug/SqlSugar.dll b/SqlSugar/obj/Debug/SqlSugar.dll index ab197d825..e05646c2f 100644 Binary files a/SqlSugar/obj/Debug/SqlSugar.dll and b/SqlSugar/obj/Debug/SqlSugar.dll differ diff --git a/SqlSugar/obj/Debug/SqlSugar.pdb b/SqlSugar/obj/Debug/SqlSugar.pdb index 6cdbb95ca..6aab39ccc 100644 Binary files a/SqlSugar/obj/Debug/SqlSugar.pdb and b/SqlSugar/obj/Debug/SqlSugar.pdb differ