mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-20 10:38:09 +08:00
Update .NET
This commit is contained in:
@@ -59,7 +59,22 @@ namespace SqlSugar
|
||||
else
|
||||
return value;
|
||||
}
|
||||
|
||||
public static Type GetMemberInfoType(MemberInfo member)
|
||||
{
|
||||
switch (member.MemberType)
|
||||
{
|
||||
case MemberTypes.Event:
|
||||
return ((EventInfo)member).EventHandlerType;
|
||||
case MemberTypes.Field:
|
||||
return ((FieldInfo)member).FieldType;
|
||||
case MemberTypes.Method:
|
||||
return ((MethodInfo)member).ReturnType;
|
||||
case MemberTypes.Property:
|
||||
return ((PropertyInfo)member).PropertyType;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
public static bool IsLogicOperator(string operatorValue)
|
||||
{
|
||||
return operatorValue == "&&" || operatorValue == "||" || operatorValue == "AND" || operatorValue == "OR";
|
||||
@@ -118,7 +133,8 @@ namespace SqlSugar
|
||||
}
|
||||
// fetch the root object reference:
|
||||
var constExpr = expression as ConstantExpression;
|
||||
if (constExpr == null) {
|
||||
if (constExpr == null)
|
||||
{
|
||||
return DynamicInvoke(rootExpression);
|
||||
}
|
||||
object objReference = constExpr.Value;
|
||||
|
@@ -242,10 +242,28 @@ namespace SqlSugar
|
||||
MemberAssignment memberAssignment = (MemberAssignment)binding;
|
||||
var memberName = memberAssignment.Member.Name;
|
||||
var item = memberAssignment.Expression;
|
||||
if (IsNullable(item) && item is UnaryExpression)
|
||||
{
|
||||
var memtype = ExpressionTool.GetMemberInfoType(memberAssignment.Member);
|
||||
if (IsNullable(memtype) && UtilMethods.GetUnderType(memtype) == UtilMethods.GetUnderType(item.Type))
|
||||
{
|
||||
item = (item as UnaryExpression).Operand;
|
||||
}
|
||||
}
|
||||
ResolveNewExpressions(parameter, item, memberName);
|
||||
}
|
||||
}
|
||||
|
||||
private static bool IsNullable(Type memtype)
|
||||
{
|
||||
return memtype.Name == "Nullable`1";
|
||||
}
|
||||
|
||||
private static bool IsNullable(Expression item)
|
||||
{
|
||||
return item.Type.Name == "Nullable`1";
|
||||
}
|
||||
|
||||
//private bool IsSubMethod(MethodCallExpression express)
|
||||
//{
|
||||
// return SubTools.SubItemsConst.Any(it =>express.Object != null && express.Object.Type.Name == "Subqueryable`1");
|
||||
|
Reference in New Issue
Block a user