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++) for (int i = 0; i < base.Count; i++)
{ {
StringIsNullOrEmpty(); StringIsNullOrEmpty();
StringIsNullOrEmpty2();
} }
base.End("Method Test"); base.End("Method Test");
} }
@@ -34,7 +35,20 @@ namespace OrmTest.ExpressionTest
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(( Id > @Id0 ) OR ( Id='' OR Id IS NULL ))", new List<SugarParameter>() { base.Check(value, pars, "(( Id > @Id0 ) OR ( Id='' OR Id IS NULL ))", new List<SugarParameter>() {
new SugarParameter("@Id0",2) 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 expression = base.Expression as ConstantExpression;
var isLeft = parameter.IsLeft; var isLeft = parameter.IsLeft;
object value = expression.Value; object value = expression.Value;
var baseParameter = parameter.BaseParameter;
var isSetTempData = baseParameter.CommonTempData.IsValuable() && baseParameter.CommonTempData.Equals(CommonTempDataType.ChildNodeSet);
switch (parameter.Context.ResolveType) switch (parameter.Context.ResolveType)
{ {
case ResolveExpressType.SelectSingle: case ResolveExpressType.SelectSingle:
case ResolveExpressType.SelectMultiple: case ResolveExpressType.SelectMultiple:
parameter.BaseParameter.CommonTempData = value; baseParameter.CommonTempData = value;
break; break;
case ResolveExpressType.WhereSingle: case ResolveExpressType.WhereSingle:
AppendParameter(parameter, isLeft, value);
break;
case ResolveExpressType.WhereMultiple: case ResolveExpressType.WhereMultiple:
AppendParameter(parameter, isLeft, value); if (isSetTempData)
{
baseParameter.CommonTempData = value;
}
else
{
AppendParameter(parameter, isLeft, value);
}
break; break;
case ResolveExpressType.FieldSingle: case ResolveExpressType.FieldSingle:
case ResolveExpressType.FieldMultiple: case ResolveExpressType.FieldMultiple:

View File

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