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