This commit is contained in:
sunkaixuan
2017-07-17 01:49:09 +08:00
parent 9c13db328a
commit 219130550d
8 changed files with 18 additions and 11 deletions

View File

@@ -3,8 +3,6 @@ using System.Collections.Generic;
using System.Text; using System.Text;
using System.Linq; using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Reflection;
namespace SqlSugar namespace SqlSugar
{ {
public class InsertBuilder : IDMLBuilder public class InsertBuilder : IDMLBuilder

View File

@@ -2,7 +2,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Reflection;
using System.Text; using System.Text;
namespace SqlSugar namespace SqlSugar

View File

@@ -46,6 +46,16 @@ namespace SqlSugar
return null; return null;
} }
} }
public static object GetValue(object value)
{
if (value == null) return value;
var type = value.GetType();
if (type.IsEnum()&& type != typeof(DateType)&& type!=typeof(JoinType)&&type!=typeof(OrderByType)) return Convert.ToInt64(value);
else
return value;
}
public static bool IsLogicOperator(string operatorValue) public static bool IsLogicOperator(string operatorValue)
{ {
return operatorValue == "&&" || operatorValue == "||"; return operatorValue == "&&" || operatorValue == "||";
@@ -67,6 +77,7 @@ namespace SqlSugar
} }
public static object GetMemberValue(MemberInfo member, Expression expression) public static object GetMemberValue(MemberInfo member, Expression expression)
{ {
var rootExpression = expression as MemberExpression;
var memberInfos = new Stack<MemberInfo>(); var memberInfos = new Stack<MemberInfo>();
var fieldInfo = member as System.Reflection.FieldInfo; var fieldInfo = member as System.Reflection.FieldInfo;
object reval = null; object reval = null;
@@ -106,7 +117,7 @@ namespace SqlSugar
var objProp = objReference.GetType().GetProperty(mi.Name); var objProp = objReference.GetType().GetProperty(mi.Name);
if (objProp == null) if (objProp == null)
{ {
objReference = DynamicInvoke(expression,memberExpr); objReference = DynamicInvoke(expression, rootExpression==null?memberExpr: rootExpression);
} }
else else
{ {
@@ -118,7 +129,7 @@ namespace SqlSugar
var objField = objReference.GetType().GetField(mi.Name); var objField = objReference.GetType().GetField(mi.Name);
if (objField == null) if (objField == null)
{ {
objReference = DynamicInvoke(expression, memberExpr); objReference = DynamicInvoke(expression, rootExpression==null?memberExpr: rootExpression);
} }
else else
{ {

View File

@@ -12,7 +12,7 @@ namespace SqlSugar
{ {
var expression = base.Expression as ConstantExpression; var expression = base.Expression as ConstantExpression;
var isLeft = parameter.IsLeft; var isLeft = parameter.IsLeft;
object value = expression.Value; object value = ExpressionTool.GetValue(expression.Value);
var baseParameter = parameter.BaseParameter; var baseParameter = parameter.BaseParameter;
baseParameter.ChildExpression = expression; baseParameter.ChildExpression = expression;
var isSetTempData = baseParameter.CommonTempData.IsValuable() && baseParameter.CommonTempData.Equals(CommonTempDataType.Result); var isSetTempData = baseParameter.CommonTempData.IsValuable() && baseParameter.CommonTempData.Equals(CommonTempDataType.Result);

View File

@@ -14,7 +14,7 @@ namespace SqlSugar
var isLeft = parameter.IsLeft; var isLeft = parameter.IsLeft;
var isSetTempData = baseParameter.CommonTempData.IsValuable() && baseParameter.CommonTempData.Equals(CommonTempDataType.Result); var isSetTempData = baseParameter.CommonTempData.IsValuable() && baseParameter.CommonTempData.Equals(CommonTempDataType.Result);
var expression = base.Expression as MemberExpression; var expression = base.Expression as MemberExpression;
var isValue = expression.Member.Name == "Value" && expression.Member.GetType().Name == "RuntimePropertyInfo"; var isValue = expression.Member.Name == "Value" && expression.Member.DeclaringType.Name == "Nullable`1";
var isBool = expression.Type == PubConst.BoolType; var isBool = expression.Type == PubConst.BoolType;
var isValueBool = isValue && isBool && parameter.BaseExpression == null; var isValueBool = isValue && isBool && parameter.BaseExpression == null;
if (isValueBool) if (isValueBool)

View File

@@ -17,5 +17,5 @@ using System.Runtime.InteropServices;
// The following GUID is for the ID of the typelib if this project is exposed to COM // The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("1c022a5c-4e4d-4026-a8a3-f659b9740a1a")] [assembly: Guid("1c022a5c-4e4d-4026-a8a3-f659b9740a1a")]
[assembly: AssemblyVersion("4.2.0.7")] [assembly: AssemblyVersion("4.2.0.9")]
[assembly: AssemblyFileVersion("4.2.0.7")] [assembly: AssemblyFileVersion("4.2.0.9")]

View File

@@ -1,5 +1,4 @@
using System; using System;
using System.Reflection;
namespace SqlSugar namespace SqlSugar
{ {

View File

@@ -2,7 +2,7 @@
<package > <package >
<metadata> <metadata>
<id>sqlSugarCore</id> <id>sqlSugarCore</id>
<version>4.2.0.7</version> <version>4.2.0.9</version>
<authors>sunkaixuan</authors> <authors>sunkaixuan</authors>
<owners>Landa</owners> <owners>Landa</owners>
<licenseUrl>http://www.apache.org/licenses/LICENSE-2.0.html</licenseUrl> <licenseUrl>http://www.apache.org/licenses/LICENSE-2.0.html</licenseUrl>