diff --git a/.vs/SqlSugar/v14/.suo b/.vs/SqlSugar/v14/.suo index 412c5d454..24a6152a5 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 b883eb946..7870bc667 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 fa3663e38..24b0fc41c 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 f305377d2..b1c3cbb58 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 b0d49e418..b3121bd3c 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 f04a95c69..8844af28e 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 b883eb946..7870bc667 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 fa3663e38..24b0fc41c 100644 Binary files a/OrmTest/obj/Debug/OrmTest.pdb and b/OrmTest/obj/Debug/OrmTest.pdb differ diff --git a/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs b/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs index 3b30d39dc..619f90976 100644 --- a/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs +++ b/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs @@ -156,5 +156,16 @@ namespace SqlSugar } return reval; } + + public static object DynamicInvoke(MemberExpression expression) + { + object value = Expression.Lambda(expression).Compile().DynamicInvoke(); + if (value != null && value.GetType().IsClass && value.GetType() != ExpressionConst.StringType) + { + value = Expression.Lambda(expression).Compile().DynamicInvoke(); + } + + return value; + } } } diff --git a/SqlSugar/ExpressionsToSql/ResolveItems/MemberNewExpressionResolve.cs b/SqlSugar/ExpressionsToSql/ResolveItems/MemberNewExpressionResolve.cs index a9781e50b..d6c19bb3e 100644 --- a/SqlSugar/ExpressionsToSql/ResolveItems/MemberNewExpressionResolve.cs +++ b/SqlSugar/ExpressionsToSql/ResolveItems/MemberNewExpressionResolve.cs @@ -14,16 +14,7 @@ namespace SqlSugar var isLeft = parameter.IsLeft; var isWhereSingle = parameter.Context.IsWhereSingle; object value = null; - var isField = expression.Member is System.Reflection.FieldInfo; - var isProperty = expression.Member is System.Reflection.PropertyInfo; - if (isField) - { - value = ExpressionTool.GetFiledValue(expression); - } - else if (isProperty) - { - value = ExpressionTool.GetPropertyValue(expression.Expression as MemberExpression); - } + value = ExpressionTool.DynamicInvoke(expression); if (parameter.BaseParameter.BinaryExpressionInfoList != null) { parameter.BaseParameter.BinaryExpressionInfoList.Add(new KeyValuePair(ExpressionConst.BinaryExpressionInfoListKey, new BinaryExpressionInfo() @@ -33,11 +24,6 @@ namespace SqlSugar ExpressionType = ExpressionConst.ConstantExpressionType })); } - if (isLeft == null && base.Context.SqlWhere == null) - { - base.Context.SqlWhere = new StringBuilder(); - base.Context.SqlWhere.Append(value); - } } } } diff --git a/SqlSugar/bin/Debug/SqlSugar.dll b/SqlSugar/bin/Debug/SqlSugar.dll index f305377d2..b1c3cbb58 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 b0d49e418..b3121bd3c 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 f305377d2..b1c3cbb58 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 b0d49e418..b3121bd3c 100644 Binary files a/SqlSugar/obj/Debug/SqlSugar.pdb and b/SqlSugar/obj/Debug/SqlSugar.pdb differ