mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-19 10:08:19 +08:00
Is Null Bug
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
|
@@ -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()
|
||||
|
@@ -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)
|
||||
|
@@ -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))
|
||||
|
@@ -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)
|
||||
|
@@ -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:
|
||||
|
Reference in New Issue
Block a user