This commit is contained in:
sunkaixuan
2017-01-30 15:41:16 +08:00
parent 082aa697ce
commit 455fcbe7b0
3 changed files with 27 additions and 6 deletions

View File

@@ -22,6 +22,7 @@ namespace OrmTest.ExpressionTest
for (int i = 0; i < base.Count; i++)
{
StringIsNullOrEmpty();
StringIsNullOrEmpty2();
}
base.End("Method Test");
}
@@ -34,7 +35,20 @@ namespace OrmTest.ExpressionTest
var pars = expContext.Parameters;
base.Check(value, pars, "(( Id > @Id0 ) OR ( Id='' OR Id IS NULL ))", new List<SugarParameter>() {
new SugarParameter("@Id0",2)
}, "whereSingle1");
}, "StringIsNullOrEmpty");
}
private void StringIsNullOrEmpty2()
{
Expression<Func<Student, bool>> exp = it => 2==it.Id || NBORM.IsNullOrEmpty(true); ;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(exp, ResolveExpressType.WhereSingle);
expContext.Resolve();
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(( Id > @Id0 ) OR ( Id='' OR Id IS NULL ))", new List<SugarParameter>() {
new SugarParameter("@Id0",2)
}, "StringIsNullOrEmpty2");
}
}
}

View File

@@ -13,17 +13,24 @@ namespace SqlSugar
var expression = base.Expression as ConstantExpression;
var isLeft = parameter.IsLeft;
object value = expression.Value;
var baseParameter = parameter.BaseParameter;
var isSetTempData = baseParameter.CommonTempData.IsValuable() && baseParameter.CommonTempData.Equals(CommonTempDataType.ChildNodeSet);
switch (parameter.Context.ResolveType)
{
case ResolveExpressType.SelectSingle:
case ResolveExpressType.SelectMultiple:
parameter.BaseParameter.CommonTempData = value;
baseParameter.CommonTempData = value;
break;
case ResolveExpressType.WhereSingle:
AppendParameter(parameter, isLeft, value);
break;
case ResolveExpressType.WhereMultiple:
AppendParameter(parameter, isLeft, value);
if (isSetTempData)
{
baseParameter.CommonTempData = value;
}
else
{
AppendParameter(parameter, isLeft, value);
}
break;
case ResolveExpressType.FieldSingle:
case ResolveExpressType.FieldMultiple:

View File

@@ -16,7 +16,7 @@ namespace SqlSugar
case ResolveExpressType.WhereSingle:
case ResolveExpressType.WhereMultiple:
base.Expression = expression.Operand;
if (base.Expression is MemberExpression)
if (base.Expression is MemberExpression|| base.Expression is ConstantExpression)
{
BaseParameter.ChildExpression = base.Expression;
parameter.CommonTempData = CommonTempDataType.ChildNodeSet;