Is Null Bug

This commit is contained in:
sunkaixuan
2017-05-25 02:28:47 +08:00
parent c3d1d8b7db
commit 62fb925df0
6 changed files with 19 additions and 12 deletions

View File

@@ -28,7 +28,7 @@ namespace OrmTest.UnitTest
whereSingle5();
whereSingle6();
whereSingle7(new Student() { Id = 1 });
//whereSingle8(new Student() { Id = 1 });
whereSingle8(new Student() { Id = 1 });
WhereMultiple1();
WhereMultiple2();
@@ -159,8 +159,8 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( [Name] is @Id0 )", new List<SugarParameter>() {
new SugarParameter("@Id0",1)
base.Check(value, pars, "( [Name] IS @Name0 )", new List<SugarParameter>() {
new SugarParameter("@Name0",null)
}, "whereSingle8");
}
}

View File

@@ -14,9 +14,10 @@ namespace SqlSugar
public Expression ChildExpression { get; set; }
public Expression LeftExpression { get; set; }
public Expression RightExpression { get; set; }
public Expression Expression { get; set; }
public Expression CurrentExpression { get; set; }
public bool? IsLeft { get; set; }
public int Index { get; set; }
public bool ValueIsNull { get; set; }
public object CommonTempData { get; set; }
public ExpressionResultAppendType AppendType { get; set; }
public void IsAppendResult()

View File

@@ -142,7 +142,7 @@ namespace SqlSugar
{
this.ResolveType = resolveType;
this.Expression = expression;
BaseResolve resolve = new BaseResolve(new ExpressionParameter() { Expression = this.Expression, Context = this });
BaseResolve resolve = new BaseResolve(new ExpressionParameter() { CurrentExpression = this.Expression, Context = this });
resolve.Start();
}
public virtual string GetAsString(string asName, string fieldValue)

View File

@@ -21,7 +21,7 @@ namespace SqlSugar
}
public BaseResolve(ExpressionParameter parameter)
{
this.Expression = parameter.Expression;
this.Expression = parameter.CurrentExpression;
this.Context = parameter.Context;
this.BaseParameter = parameter;
}
@@ -33,7 +33,7 @@ namespace SqlSugar
ExpressionParameter parameter = new ExpressionParameter()
{
Context = this.Context,
Expression = expression,
CurrentExpression = expression,
IsLeft = this.IsLeft,
BaseExpression = this.ExactExpression,
BaseParameter = this.BaseParameter,
@@ -111,7 +111,7 @@ namespace SqlSugar
if (parameter.BaseExpression is BinaryExpression || parameter.BaseExpression == null)
{
var otherExpression = isLeft == true ? parameter.BaseParameter.RightExpression : parameter.BaseParameter.LeftExpression;
if (parameter.Expression is MethodCallExpression)
if (parameter.CurrentExpression is MethodCallExpression)
{
var appendValue = value;
if (this.Context.Result.Contains(ExpressionConst.Format0))

View File

@@ -51,9 +51,12 @@ namespace SqlSugar
base.Expression = rightExpression;
base.Start();
base.IsLeft = null;
base.Context.Result.Replace(ExpressionConst.Format1 + parameter.Index, operatorValue);
if (lsbs) {
if (lsbs && parameter.ValueIsNull)
{
base.Context.Result.Replace(ExpressionConst.Format1 + parameter.Index, "IS");
}
else {
base.Context.Result.Replace(ExpressionConst.Format1 + parameter.Index, operatorValue);
}
base.Context.Result.Append(ExpressionConst.Format4);
if (parameter.BaseExpression is BinaryExpression && parameter.IsLeft == true)

View File

@@ -31,9 +31,12 @@ namespace SqlSugar
}
else
{
var parentIsBinary = parameter.BaseParameter.CurrentExpression is BinaryExpression;
if (value == null && parentIsBinary) {
parameter.BaseParameter.ValueIsNull = true;
}
AppendValue(parameter, isLeft, value);
}
break;
case ResolveExpressType.FieldSingle:
case ResolveExpressType.FieldMultiple: