From 43349d92a9ba6cfc6673fbf1b3c283b422d3d4ba Mon Sep 17 00:00:00 2001 From: zqlovejyc <943620963@qq.com> Date: Mon, 23 Mar 2020 19:27:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96sql=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=EF=BC=8C=E4=BF=AE=E5=A4=8D=E7=89=B9?= =?UTF-8?q?=E6=AE=8A=E5=85=B3=E9=94=AE=E5=AD=97=E6=9C=AA=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=E9=80=A0=E6=88=90=E7=9A=84=E9=94=99?= =?UTF-8?q?=E8=AF=AFbug=EF=BC=9B=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7=E4=B8=BA1.0.3.6=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SQLBuilder.Core.UnitTest/SelectTest.cs | 198 +++++++++--------- .../Expression/ConstantExpressionResolve.cs | 7 +- .../Expression/MemberExpressionResolve.cs | 10 +- SQLBuilder.Core/SQLBuilder.Core.csproj | 10 +- SQLBuilder.Core/SqlBuilderCore.cs | 4 + SQLBuilder.Core/SqlPack.cs | 58 +++-- 6 files changed, 155 insertions(+), 132 deletions(-) diff --git a/SQLBuilder.Core.UnitTest/SelectTest.cs b/SQLBuilder.Core.UnitTest/SelectTest.cs index 818bc7b..f5bd91c 100644 --- a/SQLBuilder.Core.UnitTest/SelectTest.cs +++ b/SQLBuilder.Core.UnitTest/SelectTest.cs @@ -97,7 +97,7 @@ public void Test_GroupBy_01() var builder = SqlBuilder.Select() .Where(o => o.Name == "张强") .GroupBy(u => u.Id); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.Name = @Param0 GROUP BY A.Id,", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.[Name] = @Param0 GROUP BY A.[Id],", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -110,7 +110,7 @@ public void Test_GroupBy_02() var builder = SqlBuilder.Select() .Where(o => o.Name == "张强") .GroupBy(u => new { u.Id, u.Email }); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.Name = @Param0 GROUP BY A.Id,A.Email", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.[Name] = @Param0 GROUP BY A.[Id],A.[Email]", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -123,7 +123,7 @@ public void Test_GroupBy_03() var builder = SqlBuilder.Select() .Where(o => o.Name == "张强") .GroupBy(u => new[] { "Id", "Email" }); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.Name = @Param0 GROUP BY A.Id,A.Email", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.[Name] = @Param0 GROUP BY A.[Id],A.[Email]", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -136,7 +136,7 @@ public void Test_GroupBy_04() var builder = SqlBuilder.Select() .Where(o => o.Name == "张强") .GroupBy(u => new List { "Id", "Email" }); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.Name = @Param0 GROUP BY A.Id,A.Email", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.[Name] = @Param0 GROUP BY A.[Id],A.[Email]", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -150,7 +150,7 @@ public void Test_GroupBy_05() var builder = SqlBuilder.Select() .Where(o => o.Name == "张强") .GroupBy(u => groupBy); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.Name = @Param0 GROUP BY A.Id,A.Email", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.[Name] = @Param0 GROUP BY A.[Id],A.[Email]", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -164,7 +164,7 @@ public void Test_GroupBy_06() var builder = SqlBuilder.Select() .Where(o => o.Name == "张强") .GroupBy(u => groupFields); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.Name = @Param0 GROUP BY A.Id,A.Email", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.[Name] = @Param0 GROUP BY A.[Id],A.[Email]", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -178,7 +178,7 @@ public void Test_GroupBy_07() var builder = SqlBuilder.Select() .Where(o => o.Name == "张强") .GroupBy(u => groupFields); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.Name = @Param0 GROUP BY A.Id,A.Email", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.[Name] = @Param0 GROUP BY A.[Id],A.[Email]", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } #endregion @@ -192,7 +192,7 @@ public void Test_OrderBy_01() { var builder = SqlBuilder.Select() .OrderBy(u => new { u.Id, u.Email }, OrderType.Ascending, OrderType.Descending); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.Id ASC,A.Email DESC", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.[Id] ASC,A.[Email] DESC", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -204,7 +204,7 @@ public void Test_OrderBy_02() { var builder = SqlBuilder.Select() .OrderBy(u => new { u.Id, u.Email }, OrderType.Descending); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.Id DESC,A.Email ASC", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.[Id] DESC,A.[Email] ASC", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -216,7 +216,7 @@ public void Test_OrderBy_03() { var builder = SqlBuilder.Select() .OrderBy(u => new { u.Id, u.Email }); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.Id ASC,A.Email ASC", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.[Id] ASC,A.[Email] ASC", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -228,7 +228,7 @@ public void Test_OrderBy_04() { var builder = SqlBuilder.Select() .OrderBy(u => new[] { "Id", "Email" }); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.Id ASC,A.Email ASC", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.[Id] ASC,A.[Email] ASC", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -239,8 +239,8 @@ public void Test_OrderBy_04() public void Test_OrderBy_05() { var builder = SqlBuilder.Select() - .OrderBy(u => new List { "Id", "Email" }); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.Id ASC,A.Email ASC", builder.Sql); + .OrderBy(u => new List { "[Id]", "Email" }); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.[Id] ASC,A.[Email] ASC", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -252,8 +252,8 @@ public void Test_OrderBy_06() { var orderFields = "Id,Email".Split(','); var builder = SqlBuilder.Select() - .OrderBy(u => orderFields); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.Id ASC,A.Email ASC", builder.Sql); + .OrderBy(u => orderFields.ToList()); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.[Id] ASC,A.[Email] ASC", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -266,7 +266,7 @@ public void Test_OrderBy_07() var orderFields = "Id,Email".Split(',').ToList(); var builder = SqlBuilder.Select() .OrderBy(u => orderFields); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.Id ASC,A.Email ASC", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.[Id] ASC,A.[Email] ASC", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -279,7 +279,7 @@ public void Test_OrderBy_08() var orderField = "Id"; var builder = SqlBuilder.Select() .OrderBy(u => orderField); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.Id ASC", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.[Id] ASC", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -290,8 +290,8 @@ public void Test_OrderBy_08() public void Test_OrderBy_09() { var builder = SqlBuilder.Select() - .OrderBy(u => "Id DESC"); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.Id DESC", builder.Sql); + .OrderBy(u => "[Id] DESC"); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.[Id] DESC", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -304,7 +304,7 @@ public void Test_OrderBy_10() var orderFields = "Id,Email".Split(','); var builder = SqlBuilder.Select() .OrderBy(u => orderFields); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.Id ASC,A.Email ASC", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.[Id] ASC,A.[Email] ASC", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -317,7 +317,7 @@ public void Test_OrderBy_11() var orderFields = "Id,Email".Split(','); var builder = SqlBuilder.Select() .OrderBy(u => orderFields.ToList(), OrderType.Descending, OrderType.Descending); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.Id DESC,A.Email DESC", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.[Id] DESC,A.[Email] DESC", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -330,7 +330,7 @@ public void Test_OrderBy_12() var orderField = "Id"; var builder = SqlBuilder.Select() .OrderBy(u => orderField, OrderType.Descending); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.Id DESC", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.[Id] DESC", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -342,7 +342,7 @@ public void Test_OrderBy_13() { var builder = SqlBuilder.Select() .OrderBy(u => u.Id, OrderType.Descending); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.Id DESC", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.[Id] DESC", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -354,7 +354,7 @@ public void Test_OrderBy_14() { var builder = SqlBuilder.Select() .OrderBy(u => u.Id, OrderType.Ascending); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.Id ASC", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.[Id] ASC", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -366,7 +366,7 @@ public void Test_OrderBy_15() { var builder = SqlBuilder.Select() .OrderBy(u => u.Id); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.Id", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.[Id]", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -377,8 +377,8 @@ public void Test_OrderBy_15() public void Test_OrderBy_16() { var builder = SqlBuilder.Select() - .OrderBy(u => "Id DESC"); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.Id DESC", builder.Sql); + .OrderBy(u => "[Id] DESC"); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A ORDER BY A.[Id] DESC", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } #endregion @@ -391,7 +391,7 @@ public void Test_OrderBy_16() public void Test_Select_Top_01() { var builder = SqlBuilder.Select(u => new { u.Id, u.Name }).Top(100); - Assert.AreEqual("SELECT TOP 100 A.Id,A.Name FROM [Base_UserInfo] AS A", builder.Sql); + Assert.AreEqual("SELECT TOP 100 A.[Id],A.[Name] FROM [Base_UserInfo] AS A", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -402,7 +402,7 @@ public void Test_Select_Top_01() public void Test_Select_Top_02() { var builder = SqlBuilder.Select(u => new { u.Id, u.Name }, DatabaseType.MySQL).Top(100); - Assert.AreEqual("SELECT A.Id,A.Name FROM `Base_UserInfo` AS A LIMIT 100 OFFSET 0", builder.Sql); + Assert.AreEqual("SELECT A.`Id`,A.`Name` FROM `Base_UserInfo` AS A LIMIT 100 OFFSET 0", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -413,7 +413,7 @@ public void Test_Select_Top_02() public void Test_Select_Top_03() { var builder = SqlBuilder.Select(u => new { u.Id, u.Name }, DatabaseType.Oracle).Top(100); - Assert.AreEqual("SELECT A.Id,A.Name FROM \"Base_UserInfo\" A WHERE ROWNUM <= 100", builder.Sql); + Assert.AreEqual("SELECT A.\"Id\",A.\"Name\" FROM \"Base_UserInfo\" A WHERE ROWNUM <= 100", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } #endregion @@ -426,7 +426,7 @@ public void Test_Select_Top_03() public void Test_Select_Distinct_01() { var builder = SqlBuilder.Select(u => new { u.Id, u.Name }).Top(100).Distinct(); - Assert.AreEqual("SELECT DISTINCT TOP 100 A.Id,A.Name FROM [Base_UserInfo] AS A", builder.Sql); + Assert.AreEqual("SELECT DISTINCT TOP 100 A.[Id],A.[Name] FROM [Base_UserInfo] AS A", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -437,7 +437,7 @@ public void Test_Select_Distinct_01() public void Test_Select_Distinct_02() { var builder = SqlBuilder.Select(u => new { u.Id, u.Name }).Distinct().Top(100); - Assert.AreEqual("SELECT DISTINCT TOP 100 A.Id,A.Name FROM [Base_UserInfo] AS A", builder.Sql); + Assert.AreEqual("SELECT DISTINCT TOP 100 A.[Id],A.[Name] FROM [Base_UserInfo] AS A", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } #endregion @@ -461,7 +461,7 @@ public void Test_Select_01() public void Test_Select_02() { var builder = SqlBuilder.Select(u => u.Id); - Assert.AreEqual("SELECT A.Id FROM [Base_UserInfo] AS A", builder.Sql); + Assert.AreEqual("SELECT A.[Id] FROM [Base_UserInfo] AS A", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -472,7 +472,7 @@ public void Test_Select_02() public void Test_Select_03() { var builder = SqlBuilder.Select(u => new { u.Id, u.Name }); - Assert.AreEqual("SELECT A.Id,A.Name FROM [Base_UserInfo] AS A", builder.Sql); + Assert.AreEqual("SELECT A.[Id],A.[Name] FROM [Base_UserInfo] AS A", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -483,7 +483,7 @@ public void Test_Select_03() public void Test_Select_04() { var builder = SqlBuilder.Select(u => new { u.Id, UserName = u.Name }); - Assert.AreEqual("SELECT A.Id,A.Name AS UserName FROM [Base_UserInfo] AS A", builder.Sql); + Assert.AreEqual("SELECT A.[Id],A.[Name] AS UserName FROM [Base_UserInfo] AS A", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -496,7 +496,7 @@ public void Test_Select_05() var entity = new { name = "新用户" }; var builder = SqlBuilder.Select(o => new { o.Id, o.Name }) .Where(u => u.Name == entity.name); - Assert.AreEqual("SELECT A.Id,A.Name FROM [Base_UserInfo] AS A WHERE A.Name = @Param0", builder.Sql); + Assert.AreEqual("SELECT A.[Id],A.[Name] FROM [Base_UserInfo] AS A WHERE A.[Name] = @Param0", builder.Sql); Assert.AreEqual("新用户", builder.Parameters.First().Value); } @@ -508,7 +508,7 @@ public void Test_Select_06() { var builder = SqlBuilder.Select(u => u.Id) .Where(u => u.Name.Like("张三")); - Assert.AreEqual("SELECT A.Id FROM [Base_UserInfo] AS A WHERE A.Name LIKE '%' + @Param0 + '%'", builder.Sql); + Assert.AreEqual("SELECT A.[Id] FROM [Base_UserInfo] AS A WHERE A.[Name] LIKE '%' + @Param0 + '%'", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -521,7 +521,7 @@ public void Test_Select_07() var name = "张三"; var builder = SqlBuilder.Select(u => u.Id) .Where(u => u.Name.NotLike(name)); - Assert.AreEqual("SELECT A.Id FROM [Base_UserInfo] AS A WHERE A.Name NOT LIKE '%' + @Param0 + '%'", builder.Sql); + Assert.AreEqual("SELECT A.[Id] FROM [Base_UserInfo] AS A WHERE A.[Name] NOT LIKE '%' + @Param0 + '%'", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -534,7 +534,7 @@ public void Test_Select_08() var name = "张三"; var builder = SqlBuilder.Select(u => u.Id) .Where(u => u.Name.LikeRight(name)); - Assert.AreEqual("SELECT A.Id FROM [Base_UserInfo] AS A WHERE A.Name LIKE @Param0 + '%'", builder.Sql); + Assert.AreEqual("SELECT A.[Id] FROM [Base_UserInfo] AS A WHERE A.[Name] LIKE @Param0 + '%'", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -546,7 +546,7 @@ public void Test_Select_09() { var builder = SqlBuilder.Select(u => u.Name) .Where(u => u.Id.In(1, 2, 3)); - Assert.AreEqual("SELECT A.Name FROM [Base_UserInfo] AS A WHERE A.Id IN (@Param0,@Param1,@Param2)", builder.Sql); + Assert.AreEqual("SELECT A.[Name] FROM [Base_UserInfo] AS A WHERE A.[Id] IN (@Param0,@Param1,@Param2)", builder.Sql); Assert.AreEqual(3, builder.Parameters.Count); } @@ -559,7 +559,7 @@ public void Test_Select_10() int[] aryId = { 1, 2, 3 }; var builder = SqlBuilder.Select(u => u.Name) .Where(u => u.Id.In(aryId)); - Assert.AreEqual("SELECT A.Name FROM [Base_UserInfo] AS A WHERE A.Id IN (@Param0,@Param1,@Param2)", builder.Sql); + Assert.AreEqual("SELECT A.[Name] FROM [Base_UserInfo] AS A WHERE A.[Id] IN (@Param0,@Param1,@Param2)", builder.Sql); Assert.AreEqual(3, builder.Parameters.Count); } @@ -571,7 +571,7 @@ public void Test_Select_11() { var builder = SqlBuilder.Select(u => u.Name) .Where(u => u.Name.In(new string[] { "a", "b" })); - Assert.AreEqual("SELECT A.Name FROM [Base_UserInfo] AS A WHERE A.Name IN (@Param0,@Param1)", builder.Sql); + Assert.AreEqual("SELECT A.[Name] FROM [Base_UserInfo] AS A WHERE A.[Name] IN (@Param0,@Param1)", builder.Sql); Assert.AreEqual(2, builder.Parameters.Count); } @@ -583,7 +583,7 @@ public void Test_Select_12() { var builder = SqlBuilder.Select(u => u.Name) .Where(u => u.Id.NotIn(1, 2, 3)); - Assert.AreEqual("SELECT A.Name FROM [Base_UserInfo] AS A WHERE A.Id NOT IN (@Param0,@Param1,@Param2)", builder.Sql); + Assert.AreEqual("SELECT A.[Name] FROM [Base_UserInfo] AS A WHERE A.[Id] NOT IN (@Param0,@Param1,@Param2)", builder.Sql); Assert.AreEqual(3, builder.Parameters.Count); } @@ -605,7 +605,7 @@ public void Test_Select_13() && u.Name.LikeRight("c") || u.Id == null ); - Assert.AreEqual("SELECT A.Id FROM [Base_UserInfo] AS A WHERE A.Name = @Param0 AND (A.Id > @Param1 AND A.Name IS NOT NULL) AND A.Id > @Param2 AND A.Id < @Param3 AND A.Id IN (@Param4,@Param5,@Param6) AND A.Name LIKE '%' + @Param7 + '%' AND A.Name LIKE '%' + @Param8 AND A.Name LIKE @Param9 + '%' OR A.Id IS NULL", builder.Sql); + Assert.AreEqual("SELECT A.[Id] FROM [Base_UserInfo] AS A WHERE A.[Name] = @Param0 AND (A.[Id] > @Param1 AND A.[Name] IS NOT NULL) AND A.[Id] > @Param2 AND A.[Id] < @Param3 AND A.[Id] IN (@Param4,@Param5,@Param6) AND A.[Name] LIKE '%' + @Param7 + '%' AND A.[Name] LIKE '%' + @Param8 AND A.[Name] LIKE @Param9 + '%' OR A.[Id] IS NULL", builder.Sql); Assert.AreEqual(10, builder.Parameters.Count); } @@ -617,7 +617,7 @@ public void Test_Select_14() { var builder = SqlBuilder.Select((u, a) => new { u.Id, a.Name }) .Join((u, a) => u.Id == a.UserId && (u.Email == "111" || u.Email == "222")); - Assert.AreEqual("SELECT A.Id,B.Name FROM [Base_UserInfo] AS A JOIN [Base_Account] AS B ON A.Id = B.UserId AND (A.Email = @Param0 OR A.Email = @Param1)", builder.Sql); + Assert.AreEqual("SELECT A.[Id],B.[Name] FROM [Base_UserInfo] AS A JOIN [Base_Account] AS B ON A.[Id] = B.[UserId] AND (A.[Email] = @Param0 OR A.[Email] = @Param1)", builder.Sql); Assert.AreEqual(2, builder.Parameters.Count); } @@ -629,7 +629,7 @@ public void Test_Select_15() { var builder = SqlBuilder.Select((u, a) => new { u.Id, a.Name }) .InnerJoin((u, a) => u.Id == a.UserId); - Assert.AreEqual("SELECT A.Id,B.Name FROM [Base_UserInfo] AS A INNER JOIN [Base_Account] AS B ON A.Id = B.UserId", builder.Sql); + Assert.AreEqual("SELECT A.[Id],B.[Name] FROM [Base_UserInfo] AS A INNER JOIN [Base_Account] AS B ON A.[Id] = B.[UserId]", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -641,7 +641,7 @@ public void Test_Select_16() { var builder = SqlBuilder.Select((u, a) => new { u.Id, a.Name }) .LeftJoin((u, a) => u.Id == a.UserId); - Assert.AreEqual("SELECT A.Id,B.Name FROM [Base_UserInfo] AS A LEFT JOIN [Base_Account] AS B ON A.Id = B.UserId", builder.Sql); + Assert.AreEqual("SELECT A.[Id],B.[Name] FROM [Base_UserInfo] AS A LEFT JOIN [Base_Account] AS B ON A.[Id] = B.[UserId]", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -653,7 +653,7 @@ public void Test_Select_17() { var builder = SqlBuilder.Select((u, a) => new { u.Id, a.Name }) .RightJoin((u, a) => u.Id == a.UserId); - Assert.AreEqual("SELECT A.Id,B.Name FROM [Base_UserInfo] AS A RIGHT JOIN [Base_Account] AS B ON A.Id = B.UserId", builder.Sql); + Assert.AreEqual("SELECT A.[Id],B.[Name] FROM [Base_UserInfo] AS A RIGHT JOIN [Base_Account] AS B ON A.[Id] = B.[UserId]", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -665,7 +665,7 @@ public void Test_Select_18() { var builder = SqlBuilder.Select((u, a) => new { u.Id, a.Name }) .FullJoin((u, a) => u.Id == a.UserId); - Assert.AreEqual("SELECT A.Id,B.Name FROM [Base_UserInfo] AS A FULL JOIN [Base_Account] AS B ON A.Id = B.UserId", builder.Sql); + Assert.AreEqual("SELECT A.[Id],B.[Name] FROM [Base_UserInfo] AS A FULL JOIN [Base_Account] AS B ON A.[Id] = B.[UserId]", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -682,7 +682,7 @@ public void Test_Select_19() .InnerJoin((c, d) => c.CityId == d.Id) .FullJoin((c, d) => c.CountryId == d.Id) .Where(u => u.Id != null); - Assert.AreEqual("SELECT A.Id,B.Name,C.Name AS StudentName,D.Name AS ClassName,E.City_Name,F.Name AS CountryName FROM [Base_UserInfo] AS A JOIN [Base_Account] AS B ON A.Id = B.UserId LEFT JOIN [Base_Student] AS C ON B.Id = C.AccountId RIGHT JOIN [Base_Class] AS D ON C.Id = D.UserId INNER JOIN [Base_City] AS E ON D.CityId = E.Id FULL JOIN [Base_Country] AS F ON E.CountryId = F.Country_Id WHERE A.Id IS NOT NULL", builder.Sql); + Assert.AreEqual("SELECT A.[Id],B.[Name],C.[Name] AS StudentName,D.[Name] AS ClassName,E.[City_Name],F.[Name] AS CountryName FROM [Base_UserInfo] AS A JOIN [Base_Account] AS B ON A.[Id] = B.[UserId] LEFT JOIN [Base_Student] AS C ON B.[Id] = C.[AccountId] RIGHT JOIN [Base_Class] AS D ON C.[Id] = D.[UserId] INNER JOIN [Base_City] AS E ON D.[CityId] = E.[Id] FULL JOIN [Base_Country] AS F ON E.[CountryId] = F.[Country_Id] WHERE A.[Id] IS NOT NULL", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -695,7 +695,7 @@ public void Test_Select_20() var builder = SqlBuilder.Select(o => new { o.Id, o.Name }, DatabaseType.MySQL) .Where(u => 1 == 1) .AndWhere(u => u.Name == ""); - Assert.AreEqual("SELECT A.Id,A.Name FROM `Base_UserInfo` AS A WHERE A.Name = ?Param0", builder.Sql); + Assert.AreEqual("SELECT A.`Id`,A.`Name` FROM `Base_UserInfo` AS A WHERE A.`Name` = ?Param0", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -709,7 +709,7 @@ public void Test_Select_21() .Where(u => u.Name.Contains("11")) .AndWhere(u => !string.IsNullOrEmpty(u.Name)) .AndWhere(u => string.IsNullOrEmpty(u.Email)); - Assert.AreEqual("SELECT A.Name FROM [Base_UserInfo] AS A WHERE A.Name LIKE '%' + @Param0 + '%' AND (A.Name IS NOT NULL AND A.Name <> '') AND (A.Email IS NULL OR A.Email = '')", builder.Sql); + Assert.AreEqual("SELECT A.[Name] FROM [Base_UserInfo] AS A WHERE A.[Name] LIKE '%' + @Param0 + '%' AND (A.[Name] IS NOT NULL AND A.[Name] <> '') AND (A.[Email] IS NULL OR A.[Email] = '')", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -723,7 +723,7 @@ public void Test_Select_22() expr = expr.And(o => o.Id > 0); expr = expr.Or(o => o.Email != ""); var builder = SqlBuilder.Select().Where(expr); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.Id > @Param0 OR A.Email <> @Param1", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.[Id] > @Param0 OR A.[Email] <> @Param1", builder.Sql); Assert.AreEqual(2, builder.Parameters.Count); } @@ -734,7 +734,7 @@ public void Test_Select_22() public void Test_Select_23() { var builder = SqlBuilder.Select().WithKey(2); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.Id = @Param0", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.[Id] = @Param0", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -771,7 +771,7 @@ public void Test_Select_26() var entity = new UserInfo { Name = "新用户" }; var builder = SqlBuilder.Select(o => new { o.Id, o.Name }) .Where(u => u.Name == entity.Name); - Assert.AreEqual("SELECT A.Id,A.Name FROM [Base_UserInfo] AS A WHERE A.Name = @Param0", builder.Sql); + Assert.AreEqual("SELECT A.[Id],A.[Name] FROM [Base_UserInfo] AS A WHERE A.[Name] = @Param0", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -788,7 +788,7 @@ public void Test_Select_27() builder = SqlBuilder.Select(o => new { o.Id, o.Name }) .Where(u => u.Name == _.Name); }); - Assert.AreEqual("SELECT A.Id,A.Name FROM [Base_UserInfo] AS A WHERE A.Name = @Param0", builder.Sql); + Assert.AreEqual("SELECT A.[Id],A.[Name] FROM [Base_UserInfo] AS A WHERE A.[Name] = @Param0", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -805,7 +805,7 @@ public void Test_Select_28() builder = SqlBuilder.Select(o => new { o.Id, o.Name }) .Where(u => u.Id.Equals(_.Id)); }); - Assert.AreEqual("SELECT A.Id,A.Name FROM [Base_UserInfo] AS A WHERE A.Id = @Param0", builder.Sql); + Assert.AreEqual("SELECT A.[Id],A.[Name] FROM [Base_UserInfo] AS A WHERE A.[Id] = @Param0", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -817,7 +817,7 @@ public void Test_Select_29() { var builder = SqlBuilder.Select(o => new { o.Id, o.Name }) .Where(u => !u.Name.Equals(null)); - Assert.AreEqual("SELECT A.Id,A.Name FROM [Base_UserInfo] AS A WHERE A.Name IS NOT NULL", builder.Sql); + Assert.AreEqual("SELECT A.[Id],A.[Name] FROM [Base_UserInfo] AS A WHERE A.[Name] IS NOT NULL", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -829,7 +829,7 @@ public void Test_Select_30() { var builder = SqlBuilder.Select(o => new { o.Id, o.Name }) .Where(u => !u.Name.Equals(null) == true); - Assert.AreEqual("SELECT A.Id,A.Name FROM [Base_UserInfo] AS A WHERE A.Name IS NOT NULL", builder.Sql); + Assert.AreEqual("SELECT A.[Id],A.[Name] FROM [Base_UserInfo] AS A WHERE A.[Name] IS NOT NULL", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -841,7 +841,7 @@ public void Test_Select_31() { var builder = SqlBuilder.Select(o => new { o.Id, o.Name }) .Where(u => u.Name.Equals(null) == false); - Assert.AreEqual("SELECT A.Id,A.Name FROM [Base_UserInfo] AS A WHERE A.Name IS NOT NULL", builder.Sql); + Assert.AreEqual("SELECT A.[Id],A.[Name] FROM [Base_UserInfo] AS A WHERE A.[Name] IS NOT NULL", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -853,7 +853,7 @@ public void Test_Select_32() { var builder = SqlBuilder.Select(o => new { o.Id, o.Name }) .Where(u => u.Name.Equals(null) == true); - Assert.AreEqual("SELECT A.Id,A.Name FROM [Base_UserInfo] AS A WHERE A.Name IS NULL", builder.Sql); + Assert.AreEqual("SELECT A.[Id],A.[Name] FROM [Base_UserInfo] AS A WHERE A.[Name] IS NULL", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -867,7 +867,7 @@ public void Test_Select_33() .Where(u => u.Name.Contains("11")) .AndWhere(u => !string.IsNullOrEmpty(u.Name) == false) .AndWhere(u => string.IsNullOrEmpty(u.Email) == true); - Assert.AreEqual("SELECT A.Name FROM [Base_UserInfo] AS A WHERE A.Name LIKE '%' + @Param0 + '%' AND (A.Name IS NULL OR A.Name = '') AND (A.Email IS NULL OR A.Email = '')", builder.Sql); + Assert.AreEqual("SELECT A.[Name] FROM [Base_UserInfo] AS A WHERE A.[Name] LIKE '%' + @Param0 + '%' AND (A.[Name] IS NULL OR A.[Name] = '') AND (A.[Email] IS NULL OR A.[Email] = '')", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -884,7 +884,7 @@ public void Test_Select_34() builder = SqlBuilder.Select(o => new { o.Id, o.Name }) .Where(u => u.Id.Equals(_.Id) == false); }); - Assert.AreEqual("SELECT A.Id,A.Name FROM [Base_UserInfo] AS A WHERE A.Id <> @Param0", builder.Sql); + Assert.AreEqual("SELECT A.[Id],A.[Name] FROM [Base_UserInfo] AS A WHERE A.[Id] <> @Param0", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -901,7 +901,7 @@ public void Test_Select_35() builder = SqlBuilder.Select(o => new { o.Id, o.Name }) .Where(u => !u.Id.Equals(_.Id) == false); }); - Assert.AreEqual("SELECT A.Id,A.Name FROM [Base_UserInfo] AS A WHERE A.Id = @Param0", builder.Sql); + Assert.AreEqual("SELECT A.[Id],A.[Name] FROM [Base_UserInfo] AS A WHERE A.[Id] = @Param0", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -914,7 +914,7 @@ public void Test_Select_36() var expr = Extensions.True(); expr = expr.And(o => o.Id > 0 == false); var builder = SqlBuilder.Select().Where(expr); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.Id <= @Param0", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.[Id] <= @Param0", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -927,7 +927,7 @@ public void Test_Select_37() var expr = Extensions.True(); expr = expr.And(o => o.Id >= 0 == false); var builder = SqlBuilder.Select().Where(expr); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.Id < @Param0", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.[Id] < @Param0", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -940,7 +940,7 @@ public void Test_Select_38() var expr = Extensions.True(); expr = expr.And(o => o.Id == null == false); var builder = SqlBuilder.Select().Where(expr); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.Id IS NOT NULL", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.[Id] IS NOT NULL", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -953,7 +953,7 @@ public void Test_Select_39() var expr = Extensions.True(); expr = expr.And(o => !(o.Id > 0 && o.Id < 5)); var builder = SqlBuilder.Select().Where(expr); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.Id <= @Param0 OR A.Id >= @Param1", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.[Id] <= @Param0 OR A.[Id] >= @Param1", builder.Sql); Assert.AreEqual(2, builder.Parameters.Count); } @@ -964,7 +964,7 @@ public void Test_Select_39() public void Test_Select_40() { var builder = SqlBuilder.Select().Select(o => new { o.Id, o.CityName, o.Age, o.Address }).Where(o => o.Id > 0); - Assert.AreEqual("SELECT A.Id,A.City_Name,A.Age,A.Address FROM [Base_City3] AS A WHERE A.Id > @Param0", builder.Sql); + Assert.AreEqual("SELECT A.[Id],A.[City_Name],A.[Age],A.[Address] FROM [Base_City3] AS A WHERE A.[Id] > @Param0", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -975,7 +975,7 @@ public void Test_Select_40() public void Test_Select_41() { var builder = SqlBuilder.Select().Select(o => new { o.Id, o.CityName, o.Age, o.Address }).Where(o => o.CityName.ToUpper() == "郑州"); - Assert.AreEqual("SELECT A.Id,A.City_Name,A.Age,A.Address FROM [Base_City3] AS A WHERE UPPER(A.City_Name) = @Param0", builder.Sql); + Assert.AreEqual("SELECT A.[Id],A.[City_Name],A.[Age],A.[Address] FROM [Base_City3] AS A WHERE UPPER(A.[City_Name]) = @Param0", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -986,7 +986,7 @@ public void Test_Select_41() public void Test_Select_42() { var builder = SqlBuilder.Select().Select(o => new { o.Id, o.CityName, o.Age, o.Address }).Where(o => o.CityName.ToLower() == "郑州"); - Assert.AreEqual("SELECT A.Id,A.City_Name,A.Age,A.Address FROM [Base_City3] AS A WHERE LOWER(A.City_Name) = @Param0", builder.Sql); + Assert.AreEqual("SELECT A.[Id],A.[City_Name],A.[Age],A.[Address] FROM [Base_City3] AS A WHERE LOWER(A.[City_Name]) = @Param0", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -997,7 +997,7 @@ public void Test_Select_42() public void Test_Select_43() { var builder = SqlBuilder.Select().Select(o => new { o.Id, o.CityName, o.Age, o.Address }).Where(o => o.CityName.Trim() == "郑州"); - Assert.AreEqual("SELECT A.Id,A.City_Name,A.Age,A.Address FROM [Base_City3] AS A WHERE LTRIM(RTRIM(A.City_Name)) = @Param0", builder.Sql); + Assert.AreEqual("SELECT A.[Id],A.[City_Name],A.[Age],A.[Address] FROM [Base_City3] AS A WHERE LTRIM(RTRIM(A.[City_Name])) = @Param0", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -1008,7 +1008,7 @@ public void Test_Select_43() public void Test_Select_44() { var builder = SqlBuilder.Select().Select(o => new { o.Id, o.CityName, o.Age, o.Address }).Where(o => o.CityName.TrimStart() == "郑州"); - Assert.AreEqual("SELECT A.Id,A.City_Name,A.Age,A.Address FROM [Base_City3] AS A WHERE LTRIM(A.City_Name) = @Param0", builder.Sql); + Assert.AreEqual("SELECT A.[Id],A.[City_Name],A.[Age],A.[Address] FROM [Base_City3] AS A WHERE LTRIM(A.[City_Name]) = @Param0", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -1019,7 +1019,7 @@ public void Test_Select_44() public void Test_Select_45() { var builder = SqlBuilder.Select().Select(o => new { o.Id, o.CityName, o.Age, o.Address }).Where(o => o.CityName.TrimEnd() == "郑州"); - Assert.AreEqual("SELECT A.Id,A.City_Name,A.Age,A.Address FROM [Base_City3] AS A WHERE RTRIM(A.City_Name) = @Param0", builder.Sql); + Assert.AreEqual("SELECT A.[Id],A.[City_Name],A.[Age],A.[Address] FROM [Base_City3] AS A WHERE RTRIM(A.[City_Name]) = @Param0", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -1030,7 +1030,7 @@ public void Test_Select_45() public void Test_Select_46() { var builder = SqlBuilder.Select(DatabaseType: DatabaseType.MySQL).Select(o => new { o.Id, o.CityName, o.Age, o.Address }).Where(o => !string.IsNullOrEmpty(o.CityName) && o.CityName.Trim() == "郑州".Trim()); - Assert.AreEqual("SELECT A.Id,A.City_Name,A.Age,A.Address FROM `Base_City3` AS A WHERE (A.City_Name IS NOT NULL AND A.City_Name <> '') AND TRIM(A.City_Name) = TRIM(?Param0)", builder.Sql); + Assert.AreEqual("SELECT A.`Id`,A.`City_Name`,A.`Age`,A.`Address` FROM `Base_City3` AS A WHERE (A.`City_Name` IS NOT NULL AND A.`City_Name` <> '') AND TRIM(A.`City_Name`) = TRIM(?Param0)", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -1041,7 +1041,7 @@ public void Test_Select_46() public void Test_Select_47() { var builder = SqlBuilder.Select(DatabaseType: DatabaseType.MySQL).Select(o => new { o.Id, o.CityName, o.Age, o.Address }).Where(o => o.CityName.Trim().Contains("郑州".Trim())); - Assert.AreEqual("SELECT A.Id,A.City_Name,A.Age,A.Address FROM `Base_City3` AS A WHERE TRIM(A.City_Name) LIKE CONCAT('%',TRIM(?Param0),'%')", builder.Sql); + Assert.AreEqual("SELECT A.`Id`,A.`City_Name`,A.`Age`,A.`Address` FROM `Base_City3` AS A WHERE TRIM(A.`City_Name`) LIKE CONCAT('%',TRIM(?Param0),'%')", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -1052,7 +1052,7 @@ public void Test_Select_47() public void Test_Select_48() { var builder = SqlBuilder.Select(DatabaseType: DatabaseType.SQLite).Select(o => new { o.Id, o.CityName, o.Age, o.Address }).Where(o => o.CityName.Trim().Contains("郑州".Trim())); - Assert.AreEqual("SELECT A.Id,A.City_Name,A.Age,A.Address FROM \"Base_City3\" AS A WHERE TRIM(A.City_Name) LIKE '%' || TRIM(@Param0) || '%'", builder.Sql); + Assert.AreEqual("SELECT A.\"Id\",A.\"City_Name\",A.\"Age\",A.\"Address\" FROM \"Base_City3\" AS A WHERE TRIM(A.\"City_Name\") LIKE '%' || TRIM(@Param0) || '%'", builder.Sql); Assert.AreEqual(1, builder.Parameters.Count); } @@ -1063,7 +1063,7 @@ public void Test_Select_48() public void Test_Select_49() { var builder = SqlBuilder.Select().Where(x => new[] { "a", "b", "c" }.Contains(x.Name)); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.Name IN (@Param0,@Param1,@Param2)", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.[Name] IN (@Param0,@Param1,@Param2)", builder.Sql); Assert.AreEqual(3, builder.Parameters.Count); } @@ -1074,7 +1074,7 @@ public void Test_Select_49() public void Test_Select_50() { var builder = SqlBuilder.Select().Where(x => !new[] { "a", "b", "c" }.Contains(x.Name)); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.Name NOT IN (@Param0,@Param1,@Param2)", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.[Name] NOT IN (@Param0,@Param1,@Param2)", builder.Sql); Assert.AreEqual(3, builder.Parameters.Count); } @@ -1086,7 +1086,7 @@ public void Test_Select_51() { var array = new[] { "a", "b", "c" }; var builder = SqlBuilder.Select().Where(x => !array.Contains(x.Name)); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.Name NOT IN (@Param0,@Param1,@Param2)", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.[Name] NOT IN (@Param0,@Param1,@Param2)", builder.Sql); Assert.AreEqual(3, builder.Parameters.Count); } @@ -1098,7 +1098,7 @@ public void Test_Select_52() { var array = new[] { "a", "b", "c" }; var builder = SqlBuilder.Select().Where(x => !x.Name.In(array)); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.Name NOT IN (@Param0,@Param1,@Param2)", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.[Name] NOT IN (@Param0,@Param1,@Param2)", builder.Sql); Assert.AreEqual(3, builder.Parameters.Count); } @@ -1110,7 +1110,7 @@ public void Test_Select_53() { var array = new[] { "a", "b", "c" }; var builder = SqlBuilder.Select().Where(x => !x.Name.NotIn(array)); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.Name IN (@Param0,@Param1,@Param2)", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.[Name] IN (@Param0,@Param1,@Param2)", builder.Sql); Assert.AreEqual(3, builder.Parameters.Count); } @@ -1122,7 +1122,7 @@ public void Test_Select_54() { var array = new[] { "a", "b", "c" }; var builder = SqlBuilder.Select().Where(x => !!array.Contains(x.Name)); - Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.Name IN (@Param0,@Param1,@Param2)", builder.Sql); + Assert.AreEqual("SELECT * FROM [Base_UserInfo] AS A WHERE A.[Name] IN (@Param0,@Param1,@Param2)", builder.Sql); Assert.AreEqual(3, builder.Parameters.Count); } @@ -1133,7 +1133,7 @@ public void Test_Select_54() public void Test_Select_55() { var builder = SqlBuilder.Select().Where(x => x.IsEffective.Value); - Assert.AreEqual("SELECT * FROM [student] AS A WHERE A.IsEffective = 1", builder.Sql); + Assert.AreEqual("SELECT * FROM [student] AS A WHERE A.[IsEffective] = 1", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -1144,7 +1144,7 @@ public void Test_Select_55() public void Test_Select_56() { var builder = SqlBuilder.Select().Where(x => x.IsEffective == true); - Assert.AreEqual("SELECT * FROM [student] AS A WHERE A.IsEffective = 1", builder.Sql); + Assert.AreEqual("SELECT * FROM [student] AS A WHERE A.[IsEffective] = 1", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -1155,7 +1155,7 @@ public void Test_Select_56() public void Test_Select_57() { var builder = SqlBuilder.Select().Where(x => x.IsEffective == false); - Assert.AreEqual("SELECT * FROM [student] AS A WHERE A.IsEffective <> 1", builder.Sql); + Assert.AreEqual("SELECT * FROM [student] AS A WHERE A.[IsEffective] <> 1", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -1166,7 +1166,7 @@ public void Test_Select_57() public void Test_Select_58() { var builder = SqlBuilder.Select().Where(x => x.IsEffective == true && x.IsOnLine); - Assert.AreEqual("SELECT * FROM [student] AS A WHERE A.IsEffective = 1 AND A.IsOnLine = 1", builder.Sql); + Assert.AreEqual("SELECT * FROM [student] AS A WHERE A.[IsEffective] = 1 AND A.[IsOnLine] = 1", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -1177,7 +1177,7 @@ public void Test_Select_58() public void Test_Select_59() { var builder = SqlBuilder.Select().Where(x => x.IsEffective == true && x.IsOnLine == true); - Assert.AreEqual("SELECT * FROM [student] AS A WHERE A.IsEffective = 1 AND A.IsOnLine = 1", builder.Sql); + Assert.AreEqual("SELECT * FROM [student] AS A WHERE A.[IsEffective] = 1 AND A.[IsOnLine] = 1", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -1188,7 +1188,7 @@ public void Test_Select_59() public void Test_Select_60() { var builder = SqlBuilder.Select().Where(x => !x.IsEffective.Value && !x.IsOnLine); - Assert.AreEqual("SELECT * FROM [student] AS A WHERE A.IsEffective <> 1 AND A.IsOnLine <> 1", builder.Sql); + Assert.AreEqual("SELECT * FROM [student] AS A WHERE A.[IsEffective] <> 1 AND A.[IsOnLine] <> 1", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -1199,7 +1199,7 @@ public void Test_Select_60() public void Test_Select_61() { var builder = SqlBuilder.Select().Where(x => !x.IsEffective == true && !x.IsOnLine == true); - Assert.AreEqual("SELECT * FROM [student] AS A WHERE A.IsEffective <> 1 AND A.IsOnLine <> 1", builder.Sql); + Assert.AreEqual("SELECT * FROM [student] AS A WHERE A.[IsEffective] <> 1 AND A.[IsOnLine] <> 1", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } #endregion @@ -1216,7 +1216,7 @@ public void Test_Page_01() .AndWhere(o => o.Name == "") .OrWhere(o => o.Subject == "") .Page(3, 2, "Id", "select * from student"); - Assert.AreEqual(@"DROP TEMPORARY TABLE IF EXISTS $TEMPORARY;CREATE TEMPORARY TABLE $TEMPORARY SELECT * FROM (select * from student) AS T;SELECT COUNT(1) AS Total FROM $TEMPORARY;SELECT * FROM $TEMPORARY AS X ORDER BY Id LIMIT 3 OFFSET 3;DROP TABLE $TEMPORARY;", builder.Sql); + Assert.AreEqual(@"DROP TEMPORARY TABLE IF EXISTS $TEMPORARY;CREATE TEMPORARY TABLE $TEMPORARY SELECT * FROM (select * from student) AS T;SELECT COUNT(1) AS Total FROM $TEMPORARY;SELECT * FROM $TEMPORARY AS X ORDER BY `Id` LIMIT 3 OFFSET 3;DROP TABLE $TEMPORARY;", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -1230,8 +1230,8 @@ public void Test_Page_02() .Where(o => o.Score != null) .AndWhere(o => o.Name == "") .OrWhere(o => o.Subject == "") - .Page(3, 2, "Id"); - Assert.AreEqual(@"DROP TEMPORARY TABLE IF EXISTS $TEMPORARY;CREATE TEMPORARY TABLE $TEMPORARY SELECT * FROM (SELECT * FROM `student` AS A WHERE A.Score IS NOT NULL AND A.Name = ?Param0 OR A.Subject = ?Param1) AS T;SELECT COUNT(1) AS Total FROM $TEMPORARY;SELECT * FROM $TEMPORARY AS X ORDER BY Id LIMIT 3 OFFSET 3;DROP TABLE $TEMPORARY;", builder.Sql); + .Page(3, 2, "`Id`"); + Assert.AreEqual(@"DROP TEMPORARY TABLE IF EXISTS $TEMPORARY;CREATE TEMPORARY TABLE $TEMPORARY SELECT * FROM (SELECT * FROM `student` AS A WHERE A.`Score` IS NOT NULL AND A.`Name` = ?Param0 OR A.`Subject` = ?Param1) AS T;SELECT COUNT(1) AS Total FROM $TEMPORARY;SELECT * FROM $TEMPORARY AS X ORDER BY `Id` LIMIT 3 OFFSET 3;DROP TABLE $TEMPORARY;", builder.Sql); Assert.AreEqual(2, builder.Parameters.Count); } @@ -1243,8 +1243,8 @@ public void Test_Page_03() { var builder = SqlBuilder.Select(u => u.Id) .Where(u => u.Name == "b" && (u.Id > 2 && u.Name != null && (u.Email == "11" || u.Email == "22" || u.Email == "ee"))) - .Page(10, 1, "Id"); - Assert.AreEqual(@"IF OBJECT_ID(N'TEMPDB..#TEMPORARY') IS NOT NULL DROP TABLE #TEMPORARY;SELECT * INTO #TEMPORARY FROM (SELECT A.Id FROM [Base_UserInfo] AS A WHERE A.Name = @Param0 AND (A.Id > @Param1 AND A.Name IS NOT NULL AND (A.Email = @Param2 OR A.Email = @Param3 OR A.Email = @Param4))) AS T;SELECT COUNT(1) AS Total FROM #TEMPORARY;SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY Id) AS RowNumber, * FROM #TEMPORARY) AS N WHERE RowNumber BETWEEN 1 AND 10;DROP TABLE #TEMPORARY;", builder.Sql); + .Page(10, 1, "[Id]"); + Assert.AreEqual(@"IF OBJECT_ID(N'TEMPDB..#TEMPORARY') IS NOT NULL DROP TABLE #TEMPORARY;SELECT * INTO #TEMPORARY FROM (SELECT A.[Id] FROM [Base_UserInfo] AS A WHERE A.[Name] = @Param0 AND (A.[Id] > @Param1 AND A.[Name] IS NOT NULL AND (A.[Email] = @Param2 OR A.[Email] = @Param3 OR A.[Email] = @Param4))) AS T;SELECT COUNT(1) AS Total FROM #TEMPORARY;SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY [Id]) AS RowNumber, * FROM #TEMPORARY) AS N WHERE RowNumber BETWEEN 1 AND 10;DROP TABLE #TEMPORARY;", builder.Sql); Assert.AreEqual(5, builder.Parameters.Count); } @@ -1257,7 +1257,7 @@ public void Test_Page_04() var builder = SqlBuilder.Select(u => u.Id) .Where(u => u.Name == "b" && (u.Id > 2 && u.Name != null && (u.Email == "11" || u.Email == "22" || u.Email == "ee"))) .PageByWith(10, 1, "Id"); - Assert.AreEqual(@"IF OBJECT_ID(N'TEMPDB..#TEMPORARY') IS NOT NULL DROP TABLE #TEMPORARY;WITH T AS (SELECT A.Id FROM [Base_UserInfo] AS A WHERE A.Name = @Param0 AND (A.Id > @Param1 AND A.Name IS NOT NULL AND (A.Email = @Param2 OR A.Email = @Param3 OR A.Email = @Param4))) SELECT * INTO #TEMPORARY FROM T;SELECT COUNT(1) AS Total FROM #TEMPORARY;WITH R AS (SELECT ROW_NUMBER() OVER (ORDER BY Id) AS RowNumber,* FROM #TEMPORARY) SELECT * FROM R WHERE RowNumber BETWEEN 1 AND 10;DROP TABLE #TEMPORARY;", builder.Sql); + Assert.AreEqual(@"IF OBJECT_ID(N'TEMPDB..#TEMPORARY') IS NOT NULL DROP TABLE #TEMPORARY;WITH T AS (SELECT A.[Id] FROM [Base_UserInfo] AS A WHERE A.[Name] = @Param0 AND (A.[Id] > @Param1 AND A.[Name] IS NOT NULL AND (A.[Email] = @Param2 OR A.[Email] = @Param3 OR A.[Email] = @Param4))) SELECT * INTO #TEMPORARY FROM T;SELECT COUNT(1) AS Total FROM #TEMPORARY;WITH R AS (SELECT ROW_NUMBER() OVER (ORDER BY [Id]) AS RowNumber,* FROM #TEMPORARY) SELECT * FROM R WHERE RowNumber BETWEEN 1 AND 10;DROP TABLE #TEMPORARY;", builder.Sql); Assert.AreEqual(5, builder.Parameters.Count); } @@ -1268,7 +1268,7 @@ public void Test_Page_04() public void Test_Page_05() { var builder = SqlBuilder.Select().PageByWith(10, 1, "Id", "WITH T AS (SELECT * FROM Base_UserInfo)"); - Assert.AreEqual(@"IF OBJECT_ID(N'TEMPDB..#TEMPORARY') IS NOT NULL DROP TABLE #TEMPORARY;WITH T AS (SELECT * FROM Base_UserInfo) SELECT * INTO #TEMPORARY FROM T;SELECT COUNT(1) AS Total FROM #TEMPORARY;WITH R AS (SELECT ROW_NUMBER() OVER (ORDER BY Id) AS RowNumber,* FROM #TEMPORARY) SELECT * FROM R WHERE RowNumber BETWEEN 1 AND 10;DROP TABLE #TEMPORARY;", builder.Sql); + Assert.AreEqual(@"IF OBJECT_ID(N'TEMPDB..#TEMPORARY') IS NOT NULL DROP TABLE #TEMPORARY;WITH T AS (SELECT * FROM Base_UserInfo) SELECT * INTO #TEMPORARY FROM T;SELECT COUNT(1) AS Total FROM #TEMPORARY;WITH R AS (SELECT ROW_NUMBER() OVER (ORDER BY [Id]) AS RowNumber,* FROM #TEMPORARY) SELECT * FROM R WHERE RowNumber BETWEEN 1 AND 10;DROP TABLE #TEMPORARY;", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -1279,7 +1279,7 @@ public void Test_Page_05() public void Test_Page_06() { var builder = SqlBuilder.Select().Page(10, 1, "Id", "WITH T AS (SELECT * FROM Base_UserInfo)"); - Assert.AreEqual(@"IF OBJECT_ID(N'TEMPDB..#TEMPORARY') IS NOT NULL DROP TABLE #TEMPORARY;WITH T AS (SELECT * FROM Base_UserInfo) SELECT * INTO #TEMPORARY FROM T;SELECT COUNT(1) AS Total FROM #TEMPORARY;WITH R AS (SELECT ROW_NUMBER() OVER (ORDER BY Id) AS RowNumber,* FROM #TEMPORARY) SELECT * FROM R WHERE RowNumber BETWEEN 1 AND 10;DROP TABLE #TEMPORARY;", builder.Sql); + Assert.AreEqual(@"IF OBJECT_ID(N'TEMPDB..#TEMPORARY') IS NOT NULL DROP TABLE #TEMPORARY;WITH T AS (SELECT * FROM Base_UserInfo) SELECT * INTO #TEMPORARY FROM T;SELECT COUNT(1) AS Total FROM #TEMPORARY;WITH R AS (SELECT ROW_NUMBER() OVER (ORDER BY [Id]) AS RowNumber,* FROM #TEMPORARY) SELECT * FROM R WHERE RowNumber BETWEEN 1 AND 10;DROP TABLE #TEMPORARY;", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } @@ -1290,7 +1290,7 @@ public void Test_Page_06() public void Test_Page_07() { var builder = SqlBuilder.Select(DatabaseType: DatabaseType.MySQL).PageByWith(10, 1, "Id", "WITH T AS (SELECT * FROM `Base_UserInfo`)"); - Assert.AreEqual(@"WITH T AS (SELECT * FROM `Base_UserInfo`) SELECT COUNT(1) AS Total FROM T;WITH T AS (SELECT * FROM `Base_UserInfo`) SELECT * FROM T ORDER BY Id LIMIT 10 OFFSET 0;", builder.Sql); + Assert.AreEqual(@"WITH T AS (SELECT * FROM `Base_UserInfo`) SELECT COUNT(1) AS Total FROM T;WITH T AS (SELECT * FROM `Base_UserInfo`) SELECT * FROM T ORDER BY `Id` LIMIT 10 OFFSET 0;", builder.Sql); Assert.AreEqual(0, builder.Parameters.Count); } #endregion diff --git a/SQLBuilder.Core/Expression/ConstantExpressionResolve.cs b/SQLBuilder.Core/Expression/ConstantExpressionResolve.cs index a943bfb..1806377 100644 --- a/SQLBuilder.Core/Expression/ConstantExpressionResolve.cs +++ b/SQLBuilder.Core/Expression/ConstantExpressionResolve.cs @@ -74,7 +74,7 @@ public override SqlPack GroupBy(ConstantExpression expression, SqlPack sqlPack) sqlPack.SetTableAlias(tableName); var tableAlias = sqlPack.GetTableAlias(tableName); if (!string.IsNullOrEmpty(tableAlias)) tableAlias += "."; - sqlPack += tableAlias + expression.Value.ToString() + ","; + sqlPack += tableAlias + sqlPack.GetColumnName(expression.Value.ToString()) + ","; return sqlPack; } @@ -91,7 +91,10 @@ public override SqlPack OrderBy(ConstantExpression expression, SqlPack sqlPack, sqlPack.SetTableAlias(tableName); var tableAlias = sqlPack.GetTableAlias(tableName); if (!string.IsNullOrEmpty(tableAlias)) tableAlias += "."; - sqlPack += tableAlias + expression.Value.ToString(); + var field = expression.Value.ToString(); + if (!field.ToUpper().Contains(" ASC") && !field.ToUpper().Contains(" DESC")) + field = sqlPack.GetColumnName(field); + sqlPack += tableAlias + field; if (orders?.Length > 0) sqlPack += $" { (orders[0] == OrderType.Descending ? "DESC" : "ASC")}"; return sqlPack; diff --git a/SQLBuilder.Core/Expression/MemberExpressionResolve.cs b/SQLBuilder.Core/Expression/MemberExpressionResolve.cs index 9fc4d98..55762a1 100644 --- a/SQLBuilder.Core/Expression/MemberExpressionResolve.cs +++ b/SQLBuilder.Core/Expression/MemberExpressionResolve.cs @@ -130,7 +130,7 @@ public override SqlPack Select(MemberExpression expression, SqlPack sqlPack) sqlPack.SetTableAlias(tableName); string tableAlias = sqlPack.GetTableAlias(tableName); if (!string.IsNullOrEmpty(tableAlias)) tableAlias += "."; - sqlPack.SelectFields.Add(tableAlias + sqlPack.GetColumnInfo(expression.Member.DeclaringType, expression.Member, string.IsNullOrEmpty(tableAlias)).columnName); + sqlPack.SelectFields.Add(tableAlias + sqlPack.GetColumnInfo(expression.Member.DeclaringType, expression.Member).columnName); return sqlPack; } @@ -149,7 +149,7 @@ public override SqlPack Join(MemberExpression expression, SqlPack sqlPack) sqlPack.SetTableAlias(tableName); string tableAlias = sqlPack.GetTableAlias(tableName); if (!string.IsNullOrEmpty(tableAlias)) tableAlias += "."; - sqlPack += tableAlias + sqlPack.GetColumnInfo(expression.Member.DeclaringType, expression.Member, string.IsNullOrEmpty(tableAlias)).columnName; + sqlPack += tableAlias + sqlPack.GetColumnInfo(expression.Member.DeclaringType, expression.Member).columnName; return sqlPack; } @@ -177,7 +177,7 @@ public override SqlPack Where(MemberExpression expression, SqlPack sqlPack) sqlPack.SetTableAlias(tableName); var tableAlias = sqlPack.GetTableAlias(tableName); if (!string.IsNullOrEmpty(tableAlias)) tableAlias += "."; - sqlPack += tableAlias + sqlPack.GetColumnInfo(expression.Member.DeclaringType, expression.Member, string.IsNullOrEmpty(tableAlias)).columnName; + sqlPack += tableAlias + sqlPack.GetColumnInfo(expression.Member.DeclaringType, expression.Member).columnName; //字段是bool类型 if (expression.NodeType == ExpressionType.MemberAccess && expression.Type.GetCoreType() == typeof(bool)) { @@ -243,7 +243,7 @@ public override SqlPack GroupBy(MemberExpression expression, SqlPack sqlPack) if (!string.IsNullOrEmpty(tableAlias)) tableAlias += "."; if (expression.Expression.NodeType == ExpressionType.Parameter) { - sqlPack += tableAlias + sqlPack.GetColumnInfo(expression.Member.DeclaringType, expression.Member, false).columnName + ","; + sqlPack += tableAlias + sqlPack.GetColumnInfo(expression.Member.DeclaringType, expression.Member).columnName + ","; } if (expression.Expression.NodeType == ExpressionType.Constant) { @@ -303,7 +303,7 @@ public override SqlPack OrderBy(MemberExpression expression, SqlPack sqlPack, pa if (!string.IsNullOrEmpty(tableAlias)) tableAlias += "."; if (expression.Expression.NodeType == ExpressionType.Parameter) { - sqlPack += tableAlias + sqlPack.GetColumnInfo(expression.Member.DeclaringType, expression.Member, false).columnName; + sqlPack += tableAlias + sqlPack.GetColumnInfo(expression.Member.DeclaringType, expression.Member).columnName; if (orders?.Length > 0) sqlPack += $" { (orders[0] == OrderType.Descending ? "DESC" : "ASC")}"; } diff --git a/SQLBuilder.Core/SQLBuilder.Core.csproj b/SQLBuilder.Core/SQLBuilder.Core.csproj index bbddf06..c6faa3a 100644 --- a/SQLBuilder.Core/SQLBuilder.Core.csproj +++ b/SQLBuilder.Core/SQLBuilder.Core.csproj @@ -2,15 +2,15 @@ netstandard2.0 - 1.0.3.5 + 1.0.3.6 张强 - 1.0.3.5 + 1.0.3.6 true - Expression表达式转换为SQL语句,支持SqlServer、MySQL、Oracle、SQLite、PostgreSQL + Expression表达式转换为SQL语句,支持SqlServer、MySQL、Oracle、SQLite、PostgreSQL;基于Dapper实现了不同数据库对应的数据仓储Repository; Copyright © 2018-2020 , 张强 943620963@qq.com Zq.SQLBuilder.Core - 1.修复部分情况下Contains方法解析异常bug; - 1.0.3.5 + 1.优化sql解析格式化,修复特殊关键字未进行格式化造成的错误bug; + 1.0.3.6 https://github.com/zqlovejyc/SQLBuilder.Core diff --git a/SQLBuilder.Core/SqlBuilderCore.cs b/SQLBuilder.Core/SqlBuilderCore.cs index 8518729..4689226 100644 --- a/SQLBuilder.Core/SqlBuilderCore.cs +++ b/SQLBuilder.Core/SqlBuilderCore.cs @@ -796,6 +796,8 @@ public SqlBuilderCore OrderBy(Expression> expression, params public SqlBuilderCore Page(int pageSize, int pageIndex, string orderField, string sql = null, Dictionary parameters = null) { var sb = new StringBuilder(); + if (!orderField.ToUpper().Contains(" ASC") && !orderField.ToUpper().Contains(" DESC")) + orderField = this._sqlPack.GetColumnName(orderField); if (!string.IsNullOrEmpty(sql)) { this._sqlPack.DbParams.Clear(); @@ -858,6 +860,8 @@ public SqlBuilderCore Page(int pageSize, int pageIndex, string orderField, st public SqlBuilderCore PageByWith(int pageSize, int pageIndex, string orderField, string sql = null, Dictionary parameters = null) { var sb = new StringBuilder(); + if (!orderField.ToUpper().Contains(" ASC") && !orderField.ToUpper().Contains(" DESC")) + orderField = this._sqlPack.GetColumnName(orderField); if (!string.IsNullOrEmpty(sql)) { this._sqlPack.DbParams.Clear(); diff --git a/SQLBuilder.Core/SqlPack.cs b/SQLBuilder.Core/SqlPack.cs index bd0d7ff..19f769d 100644 --- a/SQLBuilder.Core/SqlPack.cs +++ b/SQLBuilder.Core/SqlPack.cs @@ -281,61 +281,77 @@ public string GetTableAlias(string tableName) } #endregion + #region GetFormatName + /// + /// GetFormatName + /// + /// + /// + public string GetFormatName(string name) + { + if ( + name?.StartsWith("[") == false && + name?.StartsWith("`") == false && + name?.StartsWith("\"") == false) + { + name = string.Format(this.FormatTempl, name); + } + return name; + } + #endregion + #region GetTableName /// /// GetTableName /// /// 类型 - /// 是否格式化 /// string - public string GetTableName(Type type, bool isFormat = true) + public string GetTableName(Type type) { - var tableName = isFormat || this.DatabaseType == DatabaseType.PostgreSQL ? - string.Format(this.FormatTempl, type.Name) : - type.Name; + var tableName = this.GetFormatName(type.Name); if (type.GetCustomAttributes(typeof(CusTableAttribute), false).FirstOrDefault() is CusTableAttribute cta) { if (!string.IsNullOrEmpty(cta.Name)) { - tableName = isFormat || this.DatabaseType == DatabaseType.PostgreSQL ? - string.Format(this.FormatTempl, cta.Name) : - cta.Name; + tableName = this.GetFormatName(cta.Name); } if (!string.IsNullOrEmpty(cta.Schema)) { - tableName = isFormat || this.DatabaseType == DatabaseType.PostgreSQL ? - $"{string.Format(this.FormatTempl, cta.Schema)}.{tableName}" : - $"{cta.Schema}.{tableName}"; + tableName = $"{this.GetFormatName(cta.Schema)}.{tableName}"; } } else if (type.GetCustomAttributes(typeof(SysTableAttribute), false).FirstOrDefault() is SysTableAttribute sta) { if (!string.IsNullOrEmpty(sta.Name)) { - tableName = isFormat || this.DatabaseType == DatabaseType.PostgreSQL ? - string.Format(this.FormatTempl, sta.Name) : - sta.Name; + tableName = this.GetFormatName(sta.Name); } if (!string.IsNullOrEmpty(sta.Schema)) { - tableName = isFormat || this.DatabaseType == DatabaseType.PostgreSQL ? - $"{string.Format(this.FormatTempl, sta.Schema)}.{tableName}" : - $"{sta.Schema}.{tableName}"; + tableName = $"{this.GetFormatName(sta.Schema)}.{tableName}"; } } return tableName; } #endregion + #region GetColumnName + /// + /// GetFormatColumnName + /// + /// 列名 + /// + public string GetColumnName(string columnName) => this.GetFormatName(columnName); + #endregion + #region GetColumnInfo /// /// GetColumnInfo /// /// 类型 /// 成员 - /// 是否格式化 /// Tuple - public (string columnName, bool isInsert, bool isUpdate) GetColumnInfo(Type type, MemberInfo member, bool isFormat = true) + public (string columnName, bool isInsert, bool isUpdate) GetColumnInfo(Type type, MemberInfo member) { string columnName = null; var isInsert = true; @@ -385,7 +401,7 @@ public string GetTableName(Type type, bool isFormat = true) { isUpdate = false; } - return ((isFormat || this.DatabaseType == DatabaseType.PostgreSQL ? this.GetFormatColumnName(columnName) : columnName), isInsert, isUpdate); + return (this.GetColumnName(columnName), isInsert, isUpdate); } #endregion @@ -424,7 +440,7 @@ public string GetTableName(Type type, bool isFormat = true) { keyName = propertyName; } - result.Add(((isFormat || this.DatabaseType == DatabaseType.PostgreSQL ? this.GetFormatColumnName(keyName) : keyName), propertyName)); + result.Add((this.GetColumnName(keyName), propertyName)); } } return result;