This commit is contained in:
sunkaixuan
2017-09-07 14:44:42 +08:00
parent cc389857e3
commit 1cf9fca566
2 changed files with 22 additions and 3 deletions

View File

@@ -21,7 +21,7 @@ namespace OrmTest.UnitTest
base.Begin();
for (int i = 0; i < base.Count; i++)
{
whereSingle24();
whereSingle23();
whereSingle22();
whereSingle21();
@@ -378,6 +378,18 @@ namespace OrmTest.UnitTest
new SugarParameter("@Const0",val)
}, "whereSingle23");
}
private void whereSingle24()
{
Expression<Func<DataTestInfo, bool>> exp = it => it.Datetime1 > DateTime.Now.Date;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( [Datetime1] > @Datetime10 )", new List<SugarParameter>()
{
new SugarParameter("@Datetime10",DateTime.Now.Date)
}, "whereSingle24");
}
}
public class WhereConst

View File

@@ -21,6 +21,7 @@ namespace SqlSugar
var isDateValue = expression.Member.Name.IsIn(Enum.GetNames(typeof(DateType))) && (expression.Expression as MemberExpression).Type == UtilConstants.DateType;
var isLogicOperator = ExpressionTool.IsLogicOperator(baseParameter.OperatorValue) || baseParameter.OperatorValue.IsNullOrEmpty();
var isHasValue = isLogicOperator && expression.Member.Name == "HasValue" && expression.Expression != null && expression.NodeType == ExpressionType.MemberAccess;
var isDateTimeNowDate = expression.Member.Name == "Date" && (expression.Expression as MemberExpression) != null && (expression.Expression as MemberExpression).Member.Name == "Now";
if (isLength)
{
var oldCommonTempDate = parameter.CommonTempData;
@@ -39,11 +40,12 @@ namespace SqlSugar
parameter.CommonTempData = oldCommonTempDate;
return;
}
else if (isHasValue) {
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 methodParamter = new MethodCallExpressionArgs() { IsMember = true, MemberName = parameter.CommonTempData, MemberValue = null };
var result = this.Context.DbMehtods.HasValue(new MethodCallExpressionModel()
{
Args = new List<MethodCallExpressionArgs>() {
@@ -81,6 +83,11 @@ namespace SqlSugar
{
expression = expression.Expression as MemberExpression;
}
else if (isDateTimeNowDate)
{
AppendValue(parameter, isLeft, DateTime.Now.Date);
return;
}
else if (expression.Expression != null && expression.Expression.NodeType != ExpressionType.Parameter && !isValueBool)
{
var value = ExpressionTool.GetMemberValue(expression.Member, expression);