mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-24 16:18:47 +08:00
Support native HasValue
This commit is contained in:
parent
ef67119868
commit
d3de52b89f
@ -18,7 +18,7 @@ namespace OrmTest
|
|||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
// /***Unit Test***/
|
// /***Unit Test***/
|
||||||
//new Select(1).Init();
|
new Select(1).Init();
|
||||||
new Field(1).Init();
|
new Field(1).Init();
|
||||||
new Where(1).Init();
|
new Where(1).Init();
|
||||||
new Method(1).Init();
|
new Method(1).Init();
|
||||||
|
@ -129,8 +129,9 @@ namespace OrmTest.UnitTest
|
|||||||
"Select.single4 Error");
|
"Select.single4 Error");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void single5(DateTime? p = null)
|
private void single5()
|
||||||
{
|
{
|
||||||
|
var p =(DateTime?) DateTime.Now;
|
||||||
Expression<Func<Student, object>> exp = it => p.HasValue;
|
Expression<Func<Student, object>> exp = it => p.HasValue;
|
||||||
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
|
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
|
||||||
expContext.IsSingle = false;
|
expContext.IsSingle = false;
|
||||||
@ -138,7 +139,9 @@ namespace OrmTest.UnitTest
|
|||||||
var selectorValue = expContext.Result.GetString();
|
var selectorValue = expContext.Result.GetString();
|
||||||
var pars = expContext.Parameters;
|
var pars = expContext.Parameters;
|
||||||
base.Check(
|
base.Check(
|
||||||
@"( [it].[SchoolId]<>'' AND [it].[SchoolId] IS NOT NULL )", null, selectorValue, null,
|
@"( @constant0<>'' AND @constant0 IS NOT NULL )", new List<SugarParameter>() {
|
||||||
|
new SugarParameter("@constant0",p)
|
||||||
|
}, selectorValue, pars,
|
||||||
"Select.single4 Error");
|
"Select.single4 Error");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,6 +106,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void AppendMember(ExpressionParameter parameter, bool? isLeft, object appendValue)
|
protected void AppendMember(ExpressionParameter parameter, bool? isLeft, object appendValue)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -197,6 +198,25 @@ namespace SqlSugar
|
|||||||
this.Context.Result.Append(" " + ExpressionConst.Format1 + parameter.BaseParameter.Index);
|
this.Context.Result.Append(" " + ExpressionConst.Format1 + parameter.BaseParameter.Index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
protected string AppendParameter(object paramterValue)
|
||||||
|
{
|
||||||
|
string parameterName = this.Context.SqlParameterKeyWord + "constant" + this.Context.ParameterIndex;
|
||||||
|
this.Context.ParameterIndex++;;
|
||||||
|
this.Context.Parameters.Add(new SugarParameter(parameterName, paramterValue));
|
||||||
|
return parameterName;
|
||||||
|
}
|
||||||
|
protected void AppendNot(object Value)
|
||||||
|
{
|
||||||
|
var isAppend = !this.Context.Result.Contains(ExpressionConst.Format0);
|
||||||
|
if (isAppend)
|
||||||
|
{
|
||||||
|
this.Context.Result.Append("NOT");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.Context.Result.Replace(ExpressionConst.Format0, "NOT");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected MethodCallExpressionArgs GetMethodCallArgs(ExpressionParameter parameter, Expression item)
|
protected MethodCallExpressionArgs GetMethodCallArgs(ExpressionParameter parameter, Expression item)
|
||||||
{
|
{
|
||||||
@ -215,7 +235,6 @@ namespace SqlSugar
|
|||||||
};
|
};
|
||||||
return methodCallExpressionArgs;
|
return methodCallExpressionArgs;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void ResolveNewExpressions(ExpressionParameter parameter, Expression item, string asName)
|
protected void ResolveNewExpressions(ExpressionParameter parameter, Expression item, string asName)
|
||||||
{
|
{
|
||||||
if (item.NodeType == ExpressionType.Constant)
|
if (item.NodeType == ExpressionType.Constant)
|
||||||
@ -366,18 +385,5 @@ namespace SqlSugar
|
|||||||
Check.ThrowNotSupportedException(item.GetType().Name);
|
Check.ThrowNotSupportedException(item.GetType().Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void AppendNot(object Value)
|
|
||||||
{
|
|
||||||
var isAppend = !this.Context.Result.Contains(ExpressionConst.Format0);
|
|
||||||
if (isAppend)
|
|
||||||
{
|
|
||||||
this.Context.Result.Append("NOT");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.Context.Result.Replace(ExpressionConst.Format0, "NOT");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,6 +60,19 @@ namespace SqlSugar
|
|||||||
var member = memberExpression.Expression as MemberExpression;
|
var member = memberExpression.Expression as MemberExpression;
|
||||||
parameter.CommonTempData = CommonTempDataType.Result;
|
parameter.CommonTempData = CommonTempDataType.Result;
|
||||||
var isConst = member.Expression != null && member.Expression is ConstantExpression;
|
var isConst = member.Expression != null && member.Expression is ConstantExpression;
|
||||||
|
if (isConst)
|
||||||
|
{
|
||||||
|
var paramterValue = ExpressionTool.DynamicInvoke(member);
|
||||||
|
var paramterName= base.AppendParameter(paramterValue);
|
||||||
|
var result = this.Context.DbMehtods.HasValue(new MethodCallExpressionModel()
|
||||||
|
{
|
||||||
|
Args = new List<MethodCallExpressionArgs>() {
|
||||||
|
new MethodCallExpressionArgs() { IsMember=false, MemberName=paramterName, MemberValue=paramterValue } }
|
||||||
|
});
|
||||||
|
this.Context.Result.Append(result);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
this.Expression = isConst ? member.Expression : member;
|
this.Expression = isConst ? member.Expression : member;
|
||||||
this.Start();
|
this.Start();
|
||||||
var methodParamter = isConst ? new MethodCallExpressionArgs() { IsMember = false } : new MethodCallExpressionArgs() { IsMember = true, MemberName = parameter.CommonTempData, MemberValue = null };
|
var methodParamter = isConst ? new MethodCallExpressionArgs() { IsMember = false } : new MethodCallExpressionArgs() { IsMember = true, MemberName = parameter.CommonTempData, MemberValue = null };
|
||||||
@ -72,6 +85,7 @@ namespace SqlSugar
|
|||||||
this.Context.Result.Append(result);
|
this.Context.Result.Append(result);
|
||||||
parameter.CommonTempData = null;
|
parameter.CommonTempData = null;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else if (memberExpression.Type == PubConst.BoolType && isLogicOperator)
|
else if (memberExpression.Type == PubConst.BoolType && isLogicOperator)
|
||||||
{
|
{
|
||||||
Append(parameter, nodeType);
|
Append(parameter, nodeType);
|
||||||
|
Loading…
Reference in New Issue
Block a user