mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-11-08 02:14:53 +08:00
System.HasValue
This commit is contained in:
@@ -24,6 +24,8 @@ namespace OrmTest.UnitTest
|
|||||||
single();
|
single();
|
||||||
single2();
|
single2();
|
||||||
single3();
|
single3();
|
||||||
|
single4();
|
||||||
|
single5();
|
||||||
Multiple();
|
Multiple();
|
||||||
singleDynamic();
|
singleDynamic();
|
||||||
MultipleDynamic();
|
MultipleDynamic();
|
||||||
@@ -114,6 +116,32 @@ namespace OrmTest.UnitTest
|
|||||||
"Select.single3 Error");
|
"Select.single3 Error");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void single4(int p = 1)
|
||||||
|
{
|
||||||
|
Expression<Func<Student, object>> exp = it => it.CreateTime.HasValue;
|
||||||
|
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
|
||||||
|
expContext.IsSingle = false;
|
||||||
|
expContext.Resolve(exp, ResolveExpressType.WhereMultiple);
|
||||||
|
var selectorValue = expContext.Result.GetString();
|
||||||
|
var pars = expContext.Parameters;
|
||||||
|
base.Check(
|
||||||
|
@"( [it].[CreateTime]<>'' AND [it].[CreateTime] IS NOT NULL )", null, selectorValue, null,
|
||||||
|
"Select.single4 Error");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void single5(int p = 1)
|
||||||
|
{
|
||||||
|
Expression<Func<Student, object>> exp = it => it.SchoolId.HasValue;
|
||||||
|
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
|
||||||
|
expContext.IsSingle = false;
|
||||||
|
expContext.Resolve(exp, ResolveExpressType.WhereMultiple);
|
||||||
|
var selectorValue = expContext.Result.GetString();
|
||||||
|
var pars = expContext.Parameters;
|
||||||
|
base.Check(
|
||||||
|
@"( [it].[SchoolId]<>'' AND [it].[SchoolId] IS NOT NULL )", null, selectorValue, null,
|
||||||
|
"Select.single4 Error");
|
||||||
|
}
|
||||||
|
|
||||||
private void singleDynamic()
|
private void singleDynamic()
|
||||||
{
|
{
|
||||||
string a = "a";
|
string a = "a";
|
||||||
|
|||||||
@@ -34,16 +34,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
else if (isMember)
|
else if (isMember)
|
||||||
{
|
{
|
||||||
var isComparisonOperator = ExpressionTool.IsLogicOperator(baseParameter.OperatorValue)||baseParameter.OperatorValue.IsNullOrEmpty();
|
MemberLogic(parameter, baseParameter, nodeType);
|
||||||
var memberExpression = (base.Expression as MemberExpression);
|
|
||||||
if (memberExpression.Type== PubConst.BoolType&& isComparisonOperator)
|
|
||||||
{
|
|
||||||
Append(parameter, nodeType);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Result(parameter, nodeType);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (isConst)
|
else if (isConst)
|
||||||
{
|
{
|
||||||
@@ -59,6 +50,33 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void MemberLogic(ExpressionParameter parameter, ExpressionParameter baseParameter, ExpressionType nodeType)
|
||||||
|
{
|
||||||
|
var memberExpression = (base.Expression as MemberExpression);
|
||||||
|
var isLogicOperator = ExpressionTool.IsLogicOperator(baseParameter.OperatorValue) || baseParameter.OperatorValue.IsNullOrEmpty();
|
||||||
|
var isHasValue = isLogicOperator && memberExpression.Member.Name == "HasValue" && memberExpression.Expression != null && memberExpression.NodeType == ExpressionType.MemberAccess;
|
||||||
|
if (isHasValue)
|
||||||
|
{
|
||||||
|
var member = memberExpression.Expression as MemberExpression;
|
||||||
|
parameter.CommonTempData = CommonTempDataType.Result;
|
||||||
|
this.Expression = member;
|
||||||
|
this.Start();
|
||||||
|
var result= this.Context.DbMehtods.HasValue(new MethodCallExpressionModel() { Args=new List<MethodCallExpressionArgs>() {
|
||||||
|
new MethodCallExpressionArgs() { IsMember=true, MemberName= parameter.CommonTempData , MemberValue=null }
|
||||||
|
} });
|
||||||
|
this.Context.Result.Append(result);
|
||||||
|
parameter.CommonTempData = null;
|
||||||
|
}
|
||||||
|
else if (memberExpression.Type == PubConst.BoolType && isLogicOperator)
|
||||||
|
{
|
||||||
|
Append(parameter, nodeType);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Result(parameter, nodeType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void Result(ExpressionParameter parameter, ExpressionType nodeType)
|
private void Result(ExpressionParameter parameter, ExpressionType nodeType)
|
||||||
{
|
{
|
||||||
BaseParameter.ChildExpression = base.Expression;
|
BaseParameter.ChildExpression = base.Expression;
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user