Mssql Guid HasValue BUG

This commit is contained in:
sunkaixuan 2019-05-23 21:30:45 +08:00
parent 382f8797e2
commit e93b23c8e7
4 changed files with 27 additions and 1 deletions

View File

@ -25,6 +25,15 @@ namespace OrmTest
//Db.DbMaintenance.TruncateTable<TestTree>();
//Db.Ado.ExecuteCommand("insert testtree values(hierarchyid::GetRoot(),'name')");
//var list2 = Db.Queryable<TestTree>().ToList();
Db.CodeFirst.InitTables<GuidTable>();
Db.Queryable<GuidTable>().Where(it => it.Id.HasValue).ToList();
}
public class GuidTable
{
public Guid? Id { get; set; }
}
}
}

View File

@ -17,5 +17,6 @@ namespace SqlSugar
public bool IsMember { get; set; }
public object MemberName { get; set; }
public object MemberValue { get; set; }
public Type Type { get; set; }
}
}

View File

@ -336,6 +336,10 @@ namespace SqlSugar
this.Expression = expression.Expression;
this.Start();
var methodParamter = new MethodCallExpressionArgs() { IsMember = true, MemberName = parameter.CommonTempData, MemberValue = null };
if (expression.Expression?.Type != null)
{
methodParamter.Type =UtilMethods.GetUnderType(expression.Expression?.Type);
}
var result = this.Context.DbMehtods.HasValue(new MethodCallExpressionModel()
{
Args = new List<MethodCallExpressionArgs>() {

View File

@ -20,6 +20,18 @@ namespace SqlSugar
}
public partial class SqlServerMethod : DefaultDbMethod, IDbMethods
{
public override string HasValue(MethodCallExpressionModel model)
{
if (model.Args[0].Type == UtilConstants.GuidType)
{
var parameter = model.Args[0];
return string.Format("( {0} IS NOT NULL )", parameter.MemberName);
}
else
{
var parameter = model.Args[0];
return string.Format("( {0}<>'' AND {0} IS NOT NULL )", parameter.MemberName);
}
}
}
}