mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-19 01:58:13 +08:00
HasValue BUG
This commit is contained in:
@@ -650,8 +650,20 @@ namespace OrmTest.UnitTest
|
|||||||
{
|
{
|
||||||
|
|
||||||
}, "HasValue error");
|
}, "HasValue error");
|
||||||
|
HasValue2(1);
|
||||||
|
}
|
||||||
|
private void HasValue2(int p = 1)
|
||||||
|
{
|
||||||
|
Expression<Func<Student, bool>> 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.HasValue2 Error");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HasNumber()
|
private void HasNumber()
|
||||||
{
|
{
|
||||||
Expression<Func<Student, bool>> exp = it => SqlFunc.HasNumber(it.Id);
|
Expression<Func<Student, bool>> exp = it => SqlFunc.HasNumber(it.Id);
|
||||||
|
@@ -19,6 +19,8 @@ namespace SqlSugar
|
|||||||
var isValueBool = isValue && isBool && parameter.BaseExpression == null;
|
var isValueBool = isValue && isBool && parameter.BaseExpression == null;
|
||||||
var isLength = expression.Member.Name == "Length" && (expression.Expression as MemberExpression).Type == PubConst.StringType;
|
var isLength = expression.Member.Name == "Length" && (expression.Expression as MemberExpression).Type == PubConst.StringType;
|
||||||
var isDateValue = expression.Member.Name.IsIn(Enum.GetNames(typeof(DateType))) && (expression.Expression as MemberExpression).Type == PubConst.DateType;
|
var isDateValue = expression.Member.Name.IsIn(Enum.GetNames(typeof(DateType))) && (expression.Expression as MemberExpression).Type == PubConst.DateType;
|
||||||
|
var isLogicOperator = ExpressionTool.IsLogicOperator(baseParameter.OperatorValue) || baseParameter.OperatorValue.IsNullOrEmpty();
|
||||||
|
var isHasValue = isLogicOperator && expression.Member.Name == "HasValue" && expression.Expression != null && expression.NodeType == ExpressionType.MemberAccess;
|
||||||
if (isLength)
|
if (isLength)
|
||||||
{
|
{
|
||||||
var oldCommonTempDate = parameter.CommonTempData;
|
var oldCommonTempDate = parameter.CommonTempData;
|
||||||
@@ -37,7 +39,23 @@ namespace SqlSugar
|
|||||||
parameter.CommonTempData = oldCommonTempDate;
|
parameter.CommonTempData = oldCommonTempDate;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (isDateValue) {
|
else if (isHasValue) {
|
||||||
|
parameter.CommonTempData = CommonTempDataType.Result;
|
||||||
|
this.Expression = expression.Expression;
|
||||||
|
this.Start();
|
||||||
|
var methodParamter =new MethodCallExpressionArgs() { IsMember = true, MemberName = parameter.CommonTempData, MemberValue = null };
|
||||||
|
var result = this.Context.DbMehtods.HasValue(new MethodCallExpressionModel()
|
||||||
|
{
|
||||||
|
Args = new List<MethodCallExpressionArgs>() {
|
||||||
|
methodParamter
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.Context.Result.Append(result);
|
||||||
|
parameter.CommonTempData = null;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (isDateValue)
|
||||||
|
{
|
||||||
var name = expression.Member.Name;
|
var name = expression.Member.Name;
|
||||||
var oldCommonTempDate = parameter.CommonTempData;
|
var oldCommonTempDate = parameter.CommonTempData;
|
||||||
parameter.CommonTempData = CommonTempDataType.Result;
|
parameter.CommonTempData = CommonTempDataType.Result;
|
||||||
|
Reference in New Issue
Block a user