From 83fc19f63b7fa7762a400161d609d846e11ecce8 Mon Sep 17 00:00:00 2001 From: skx <610262374@qq.com> Date: Thu, 12 Nov 2020 20:27:33 +0800 Subject: [PATCH] Update exp to sql --- Src/Asp.Net/SqlServerTest/UnitTest/Main.cs | 6 ++--- .../SqlServerTest/UnitTest/UQueryable.cs | 25 +++++++++++++++++++ .../ResolveItems/BaseResolve.cs | 14 +++++++++++ 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs b/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs index 3f87e97f2..7befb2146 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs @@ -38,9 +38,9 @@ namespace OrmTest Ado(); Queryable(); QueryableAsync(); - Thread(); - Thread2(); - Thread3(); + //Thread(); + //Thread2(); + //Thread3(); } } } diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable.cs b/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable.cs index fab97fcd4..f8c122219 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable.cs @@ -84,6 +84,17 @@ namespace OrmTest var list8=Db.Queryable().Where(it => SqlFunc.ContainsArrayUseSqlParameters(ids, it.Id)).ToList(); var result2 = Db.Queryable().Where(o => o.XH == UserLoginInfo.XH).Select(o => o.XH).ToSql(); + + var x = Db.Queryable().Select(it => new BoolTest2() + { + a =it.a + }).ToSql(); + UValidate.Check(x.Key, "SELECT [a] AS [a] FROM [BoolTest1] ", "Queryable"); + x = Db.Queryable().Select(it => new BoolTest1() + { + a = it.a.Value + }).ToSql(); + UValidate.Check(x.Key, "SELECT [a] AS [a] FROM [BoolTest2] ", "Queryable"); } @@ -360,4 +371,18 @@ namespace OrmTest public Guid? Id { get; set; } } } + + internal class BoolTest1 + { + public BoolTest1() + { + } + + public bool a { get; set; } + } + + public class BoolTest2 + { + public bool? a { get; set; } + } } diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs index 541c99b7f..bf76f3715 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs @@ -343,6 +343,10 @@ namespace SqlSugar this.Context.Result.IsLockCurrentParameter = true; parameter.IsAppendTempDate(); this.Expression = item; + if (IsBoolValue(item)) + { + this.Expression = (item as MemberExpression).Expression; + } this.Start(); parameter.IsAppendResult(); this.Context.Result.Append(this.Context.GetAsString(asName, parameter.CommonTempData.ObjToString())); @@ -491,6 +495,16 @@ namespace SqlSugar Check.ThrowNotSupportedException(item.GetType().Name); } } + + private static bool IsBoolValue(Expression item) + { + return item.Type == UtilConstants.BoolType && + (item is MemberExpression) && + (item as MemberExpression).Expression != null && + (item as MemberExpression).Expression.Type == typeof(bool?) && + (item as MemberExpression).Member.Name == "Value"; + } + protected static bool IsConvert(Expression item) { return item is UnaryExpression && item.NodeType == ExpressionType.Convert;