diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable.cs b/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable.cs index 2badb38dd..0b4a873fb 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable.cs @@ -25,6 +25,15 @@ namespace OrmTest //Db.DbMaintenance.TruncateTable(); //Db.Ado.ExecuteCommand("insert testtree values(hierarchyid::GetRoot(),'name')"); //var list2 = Db.Queryable().ToList(); + + Db.CodeFirst.InitTables(); + Db.Queryable().Where(it => it.Id.HasValue).ToList(); + } + + + public class GuidTable + { + public Guid? Id { get; set; } } } } diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/MethodCallExpressionModel.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/MethodCallExpressionModel.cs index c0a51d1f6..ffe4a2e06 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/MethodCallExpressionModel.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/MethodCallExpressionModel.cs @@ -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; } } } diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs index 94227ef69..40e72deee 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs @@ -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() { diff --git a/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerExpressionContext.cs b/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerExpressionContext.cs index 80ff5b350..210f4872b 100644 --- a/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerExpressionContext.cs +++ b/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerExpressionContext.cs @@ -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); + } + } } }