From 769c1f020cb1c085fa2e44db9320a7fb63186cba Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Sun, 17 Nov 2019 21:01:49 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20Where(a=20=3D>=20bool?= =?UTF-8?q?=20&&=20id=20>=200)=20bool=20=E6=9C=AA=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E7=9A=84=20bug=EF=BC=9B=20>=20=EF=BC=88?= =?UTF-8?q?=E4=B9=8B=E5=89=8D=E5=A4=A7=E5=A4=9A=E6=95=B0=E7=B1=BB=E4=BC=BC?= =?UTF-8?q?=E7=9A=84=E8=A1=A8=E8=BE=BE=E9=83=BD=E8=83=BD=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=EF=BC=8C=E8=BF=99=E6=AC=A1=E6=98=AF=E4=B8=80=E4=B8=AA=E7=89=B9?= =?UTF-8?q?=E6=AE=8A=E6=83=85=E5=86=B5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FreeSql.DbContext/FreeSql.DbContext.xml | 7 --- .../MySqlConnectorExpression/OtherTest.cs | 24 ++++++++++ .../MySql/MySqlExpression/OtherTest.cs | 24 ++++++++++ .../Oracle/OracleExpression/OtherTest.cs | 24 ++++++++++ .../PostgreSQLExpression/OtherTest.cs | 24 ++++++++++ .../SqlServerExpression/OtherTest.cs | 24 ++++++++++ .../MySql/MySqlExpression/OtherTest.cs | 24 ++++++++++ .../Oracle/OracleExpression/OtherTest.cs | 24 ++++++++++ .../PostgreSQLExpression/OtherTest.cs | 44 ++++++++++++++----- .../SqlServerExpression/OtherTest.cs | 24 ++++++++++ .../Sqlite/SqliteExpression/OtherTest.cs | 24 ++++++++++ FreeSql/Internal/CommonExpression.cs | 10 +++-- 12 files changed, 256 insertions(+), 21 deletions(-) diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml index 1a43f59e..9c0597d5 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.xml +++ b/FreeSql.DbContext/FreeSql.DbContext.xml @@ -106,13 +106,6 @@ 清空状态数据 - - - 根据 lambda 条件删除数据 - - - - 添加 diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/MySqlConnectorExpression/OtherTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/MySqlConnectorExpression/OtherTest.cs index 361c2c67..37b81c4d 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/MySqlConnectorExpression/OtherTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.MySqlConnector/MySqlConnector/MySqlConnectorExpression/OtherTest.cs @@ -47,6 +47,30 @@ namespace FreeSql.Tests.MySqlConnectorExpression var t33 = select.Where(a => a.testFieldBoolNullable == false).ToList(); var t44 = select.Where(a => !a.testFieldBoolNullable.Value).ToList(); var t55 = select.Where(a => a.testFieldBoolNullable.Value).ToList(); + + var t111 = select.Where(a => a.testFieldBool == true && a.Id > 0).ToList(); + var t222 = select.Where(a => a.testFieldBool != true && a.Id > 0).ToList(); + var t333 = select.Where(a => a.testFieldBool == false && a.Id > 0).ToList(); + var t444 = select.Where(a => !a.testFieldBool && a.Id > 0).ToList(); + var t555 = select.Where(a => a.testFieldBool && a.Id > 0).ToList(); + + var t1111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0).ToList(); + var t2222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0).ToList(); + var t3333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0).ToList(); + var t4444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0).ToList(); + var t5555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0).ToList(); + + var t11111 = select.Where(a => a.testFieldBool == true && a.Id > 0 && a.testFieldBool == true).ToList(); + var t22222 = select.Where(a => a.testFieldBool != true && a.Id > 0 && a.testFieldBool != true).ToList(); + var t33333 = select.Where(a => a.testFieldBool == false && a.Id > 0 && a.testFieldBool == false).ToList(); + var t44444 = select.Where(a => !a.testFieldBool && a.Id > 0 && !a.testFieldBool).ToList(); + var t55555 = select.Where(a => a.testFieldBool && a.Id > 0 && a.testFieldBool).ToList(); + + var t111111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0 && a.testFieldBoolNullable == true).ToList(); + var t222222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0 && a.testFieldBoolNullable != true).ToList(); + var t333333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0 && a.testFieldBoolNullable == false).ToList(); + var t444444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0 && !a.testFieldBoolNullable.Value).ToList(); + var t555555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0 && a.testFieldBoolNullable.Value).ToList(); } [Fact] diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlExpression/OtherTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlExpression/OtherTest.cs index 7d5f4293..794f9e31 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlExpression/OtherTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/MySql/MySqlExpression/OtherTest.cs @@ -47,6 +47,30 @@ namespace FreeSql.Tests.Odbc.MySqlExpression var t33 = select.Where(a => a.testFieldBoolNullable == false).ToList(); var t44 = select.Where(a => !a.testFieldBoolNullable.Value).ToList(); var t55 = select.Where(a => a.testFieldBoolNullable.Value).ToList(); + + var t111 = select.Where(a => a.testFieldBool == true && a.Id > 0).ToList(); + var t222 = select.Where(a => a.testFieldBool != true && a.Id > 0).ToList(); + var t333 = select.Where(a => a.testFieldBool == false && a.Id > 0).ToList(); + var t444 = select.Where(a => !a.testFieldBool && a.Id > 0).ToList(); + var t555 = select.Where(a => a.testFieldBool && a.Id > 0).ToList(); + + var t1111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0).ToList(); + var t2222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0).ToList(); + var t3333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0).ToList(); + var t4444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0).ToList(); + var t5555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0).ToList(); + + var t11111 = select.Where(a => a.testFieldBool == true && a.Id > 0 && a.testFieldBool == true).ToList(); + var t22222 = select.Where(a => a.testFieldBool != true && a.Id > 0 && a.testFieldBool != true).ToList(); + var t33333 = select.Where(a => a.testFieldBool == false && a.Id > 0 && a.testFieldBool == false).ToList(); + var t44444 = select.Where(a => !a.testFieldBool && a.Id > 0 && !a.testFieldBool).ToList(); + var t55555 = select.Where(a => a.testFieldBool && a.Id > 0 && a.testFieldBool).ToList(); + + var t111111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0 && a.testFieldBoolNullable == true).ToList(); + var t222222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0 && a.testFieldBoolNullable != true).ToList(); + var t333333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0 && a.testFieldBoolNullable == false).ToList(); + var t444444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0 && !a.testFieldBoolNullable.Value).ToList(); + var t555555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0 && a.testFieldBoolNullable.Value).ToList(); } [Fact] diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleExpression/OtherTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleExpression/OtherTest.cs index 3b8ef42d..a3a42d06 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleExpression/OtherTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/Oracle/OracleExpression/OtherTest.cs @@ -45,6 +45,30 @@ namespace FreeSql.Tests.Odbc.OracleExpression var t33 = select.Where(a => a.BoolNullable == false).ToList(); var t44 = select.Where(a => !a.BoolNullable.Value).ToList(); var t55 = select.Where(a => a.BoolNullable.Value).ToList(); + + var t111 = select.Where(a => a.Bool == true && a.Id > 0).ToList(); + var t222 = select.Where(a => a.Bool != true && a.Id > 0).ToList(); + var t333 = select.Where(a => a.Bool == false && a.Id > 0).ToList(); + var t444 = select.Where(a => !a.Bool && a.Id > 0).ToList(); + var t555 = select.Where(a => a.Bool && a.Id > 0).ToList(); + + var t1111 = select.Where(a => a.BoolNullable == true && a.Id > 0).ToList(); + var t2222 = select.Where(a => a.BoolNullable != true && a.Id > 0).ToList(); + var t3333 = select.Where(a => a.BoolNullable == false && a.Id > 0).ToList(); + var t4444 = select.Where(a => !a.BoolNullable.Value && a.Id > 0).ToList(); + var t5555 = select.Where(a => a.BoolNullable.Value && a.Id > 0).ToList(); + + var t11111 = select.Where(a => a.Bool == true && a.Id > 0 && a.Bool == true).ToList(); + var t22222 = select.Where(a => a.Bool != true && a.Id > 0 && a.Bool != true).ToList(); + var t33333 = select.Where(a => a.Bool == false && a.Id > 0 && a.Bool == false).ToList(); + var t44444 = select.Where(a => !a.Bool && a.Id > 0 && !a.Bool).ToList(); + var t55555 = select.Where(a => a.Bool && a.Id > 0 && a.Bool).ToList(); + + var t111111 = select.Where(a => a.BoolNullable == true && a.Id > 0 && a.BoolNullable == true).ToList(); + var t222222 = select.Where(a => a.BoolNullable != true && a.Id > 0 && a.BoolNullable != true).ToList(); + var t333333 = select.Where(a => a.BoolNullable == false && a.Id > 0 && a.BoolNullable == false).ToList(); + var t444444 = select.Where(a => !a.BoolNullable.Value && a.Id > 0 && !a.BoolNullable.Value).ToList(); + var t555555 = select.Where(a => a.BoolNullable.Value && a.Id > 0 && a.BoolNullable.Value).ToList(); } [Fact] diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/PostgreSQLExpression/OtherTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/PostgreSQLExpression/OtherTest.cs index 39d3a70a..4b9e66f8 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/PostgreSQLExpression/OtherTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/PostgreSQL/PostgreSQLExpression/OtherTest.cs @@ -50,6 +50,30 @@ namespace FreeSql.Tests.Odbc.PostgreSQLExpression var t33 = select.Where(a => a.testFieldBoolNullable == false).ToList(); var t44 = select.Where(a => !a.testFieldBoolNullable.Value).ToList(); var t55 = select.Where(a => a.testFieldBoolNullable.Value).ToList(); + + var t111 = select.Where(a => a.testFieldBool == true && a.Id > 0).ToList(); + var t222 = select.Where(a => a.testFieldBool != true && a.Id > 0).ToList(); + var t333 = select.Where(a => a.testFieldBool == false && a.Id > 0).ToList(); + var t444 = select.Where(a => !a.testFieldBool && a.Id > 0).ToList(); + var t555 = select.Where(a => a.testFieldBool && a.Id > 0).ToList(); + + var t1111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0).ToList(); + var t2222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0).ToList(); + var t3333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0).ToList(); + var t4444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0).ToList(); + var t5555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0).ToList(); + + var t11111 = select.Where(a => a.testFieldBool == true && a.Id > 0 && a.testFieldBool == true).ToList(); + var t22222 = select.Where(a => a.testFieldBool != true && a.Id > 0 && a.testFieldBool != true).ToList(); + var t33333 = select.Where(a => a.testFieldBool == false && a.Id > 0 && a.testFieldBool == false).ToList(); + var t44444 = select.Where(a => !a.testFieldBool && a.Id > 0 && !a.testFieldBool).ToList(); + var t55555 = select.Where(a => a.testFieldBool && a.Id > 0 && a.testFieldBool).ToList(); + + var t111111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0 && a.testFieldBoolNullable == true).ToList(); + var t222222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0 && a.testFieldBoolNullable != true).ToList(); + var t333333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0 && a.testFieldBoolNullable == false).ToList(); + var t444444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0 && !a.testFieldBoolNullable.Value).ToList(); + var t555555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0 && a.testFieldBoolNullable.Value).ToList(); } [Fact] diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/SqlServerExpression/OtherTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/SqlServerExpression/OtherTest.cs index a4e1494e..63646aa8 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/SqlServerExpression/OtherTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/SqlServer/SqlServerExpression/OtherTest.cs @@ -42,6 +42,30 @@ namespace FreeSql.Tests.Odbc.SqlServerExpression var t33 = select.Where(a => a.testFieldBoolNullable == false).ToList(); var t44 = select.Where(a => !a.testFieldBoolNullable.Value).ToList(); var t55 = select.Where(a => a.testFieldBoolNullable.Value).ToList(); + + var t111 = select.Where(a => a.testFieldBool == true && a.Id > 0).ToList(); + var t222 = select.Where(a => a.testFieldBool != true && a.Id > 0).ToList(); + var t333 = select.Where(a => a.testFieldBool == false && a.Id > 0).ToList(); + var t444 = select.Where(a => !a.testFieldBool && a.Id > 0).ToList(); + var t555 = select.Where(a => a.testFieldBool && a.Id > 0).ToList(); + + var t1111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0).ToList(); + var t2222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0).ToList(); + var t3333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0).ToList(); + var t4444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0).ToList(); + var t5555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0).ToList(); + + var t11111 = select.Where(a => a.testFieldBool == true && a.Id > 0 && a.testFieldBool == true).ToList(); + var t22222 = select.Where(a => a.testFieldBool != true && a.Id > 0 && a.testFieldBool != true).ToList(); + var t33333 = select.Where(a => a.testFieldBool == false && a.Id > 0 && a.testFieldBool == false).ToList(); + var t44444 = select.Where(a => !a.testFieldBool && a.Id > 0 && !a.testFieldBool).ToList(); + var t55555 = select.Where(a => a.testFieldBool && a.Id > 0 && a.testFieldBool).ToList(); + + var t111111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0 && a.testFieldBoolNullable == true).ToList(); + var t222222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0 && a.testFieldBoolNullable != true).ToList(); + var t333333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0 && a.testFieldBoolNullable == false).ToList(); + var t444444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0 && !a.testFieldBoolNullable.Value).ToList(); + var t555555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0 && a.testFieldBoolNullable.Value).ToList(); } [Fact] diff --git a/FreeSql.Tests/FreeSql.Tests/MySql/MySqlExpression/OtherTest.cs b/FreeSql.Tests/FreeSql.Tests/MySql/MySqlExpression/OtherTest.cs index 83c2c2be..db07a187 100644 --- a/FreeSql.Tests/FreeSql.Tests/MySql/MySqlExpression/OtherTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/MySql/MySqlExpression/OtherTest.cs @@ -47,6 +47,30 @@ namespace FreeSql.Tests.MySqlExpression var t33 = select.Where(a => a.testFieldBoolNullable == false).ToList(); var t44 = select.Where(a => !a.testFieldBoolNullable.Value).ToList(); var t55 = select.Where(a => a.testFieldBoolNullable.Value).ToList(); + + var t111 = select.Where(a => a.testFieldBool == true && a.Id > 0).ToList(); + var t222 = select.Where(a => a.testFieldBool != true && a.Id > 0).ToList(); + var t333 = select.Where(a => a.testFieldBool == false && a.Id > 0).ToList(); + var t444 = select.Where(a => !a.testFieldBool && a.Id > 0).ToList(); + var t555 = select.Where(a => a.testFieldBool && a.Id > 0).ToList(); + + var t1111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0).ToList(); + var t2222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0).ToList(); + var t3333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0).ToList(); + var t4444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0).ToList(); + var t5555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0).ToList(); + + var t11111 = select.Where(a => a.testFieldBool == true && a.Id > 0 && a.testFieldBool == true).ToList(); + var t22222 = select.Where(a => a.testFieldBool != true && a.Id > 0 && a.testFieldBool != true).ToList(); + var t33333 = select.Where(a => a.testFieldBool == false && a.Id > 0 && a.testFieldBool == false).ToList(); + var t44444 = select.Where(a => !a.testFieldBool && a.Id > 0 && !a.testFieldBool).ToList(); + var t55555 = select.Where(a => a.testFieldBool && a.Id > 0 && a.testFieldBool).ToList(); + + var t111111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0 && a.testFieldBoolNullable == true).ToList(); + var t222222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0 && a.testFieldBoolNullable != true).ToList(); + var t333333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0 && a.testFieldBoolNullable == false).ToList(); + var t444444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0 && !a.testFieldBoolNullable.Value).ToList(); + var t555555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0 && a.testFieldBoolNullable.Value).ToList(); } [Fact] diff --git a/FreeSql.Tests/FreeSql.Tests/Oracle/OracleExpression/OtherTest.cs b/FreeSql.Tests/FreeSql.Tests/Oracle/OracleExpression/OtherTest.cs index ed6a76d7..1c7d9048 100644 --- a/FreeSql.Tests/FreeSql.Tests/Oracle/OracleExpression/OtherTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Oracle/OracleExpression/OtherTest.cs @@ -45,6 +45,30 @@ namespace FreeSql.Tests.OracleExpression var t33 = select.Where(a => a.BoolNullable == false).ToList(); var t44 = select.Where(a => !a.BoolNullable.Value).ToList(); var t55 = select.Where(a => a.BoolNullable.Value).ToList(); + + var t111 = select.Where(a => a.Bool == true && a.Id > 0).ToList(); + var t222 = select.Where(a => a.Bool != true && a.Id > 0).ToList(); + var t333 = select.Where(a => a.Bool == false && a.Id > 0).ToList(); + var t444 = select.Where(a => !a.Bool && a.Id > 0).ToList(); + var t555 = select.Where(a => a.Bool && a.Id > 0).ToList(); + + var t1111 = select.Where(a => a.BoolNullable == true && a.Id > 0).ToList(); + var t2222 = select.Where(a => a.BoolNullable != true && a.Id > 0).ToList(); + var t3333 = select.Where(a => a.BoolNullable == false && a.Id > 0).ToList(); + var t4444 = select.Where(a => !a.BoolNullable.Value && a.Id > 0).ToList(); + var t5555 = select.Where(a => a.BoolNullable.Value && a.Id > 0).ToList(); + + var t11111 = select.Where(a => a.Bool == true && a.Id > 0 && a.Bool == true).ToList(); + var t22222 = select.Where(a => a.Bool != true && a.Id > 0 && a.Bool != true).ToList(); + var t33333 = select.Where(a => a.Bool == false && a.Id > 0 && a.Bool == false).ToList(); + var t44444 = select.Where(a => !a.Bool && a.Id > 0 && !a.Bool).ToList(); + var t55555 = select.Where(a => a.Bool && a.Id > 0 && a.Bool).ToList(); + + var t111111 = select.Where(a => a.BoolNullable == true && a.Id > 0 && a.BoolNullable == true).ToList(); + var t222222 = select.Where(a => a.BoolNullable != true && a.Id > 0 && a.BoolNullable != true).ToList(); + var t333333 = select.Where(a => a.BoolNullable == false && a.Id > 0 && a.BoolNullable == false).ToList(); + var t444444 = select.Where(a => !a.BoolNullable.Value && a.Id > 0 && !a.BoolNullable.Value).ToList(); + var t555555 = select.Where(a => a.BoolNullable.Value && a.Id > 0 && a.BoolNullable.Value).ToList(); } [Fact] diff --git a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLExpression/OtherTest.cs b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLExpression/OtherTest.cs index f29fa7d3..950c538c 100644 --- a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLExpression/OtherTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLExpression/OtherTest.cs @@ -43,17 +43,41 @@ namespace FreeSql.Tests.PostgreSQLExpression [Fact] public void Boolean() { - var t1 = select.Where(a => a.testFieldBool == true).ToList(); - var t2 = select.Where(a => a.testFieldBool != true).ToList(); - var t3 = select.Where(a => a.testFieldBool == false).ToList(); - var t4 = select.Where(a => !a.testFieldBool).ToList(); - var t5 = select.Where(a => a.testFieldBool).ToList(); + var t1 = select.Where(a => a.testFieldBool == true).Limit(10).ToList(); + var t2 = select.Where(a => a.testFieldBool != true).Limit(10).ToList(); + var t3 = select.Where(a => a.testFieldBool == false).Limit(10).ToList(); + var t4 = select.Where(a => !a.testFieldBool).Limit(10).ToList(); + var t5 = select.Where(a => a.testFieldBool).Limit(10).ToList(); - var t11 = select.Where(a => a.testFieldBoolNullable == true).ToList(); - var t22 = select.Where(a => a.testFieldBoolNullable != true).ToList(); - var t33 = select.Where(a => a.testFieldBoolNullable == false).ToList(); - var t44 = select.Where(a => !a.testFieldBoolNullable.Value).ToList(); - var t55 = select.Where(a => a.testFieldBoolNullable.Value).ToList(); + var t11 = select.Where(a => a.testFieldBoolNullable == true).Limit(10).ToList(); + var t22 = select.Where(a => a.testFieldBoolNullable != true).Limit(10).ToList(); + var t33 = select.Where(a => a.testFieldBoolNullable == false).Limit(10).ToList(); + var t44 = select.Where(a => !a.testFieldBoolNullable.Value).Limit(10).ToList(); + var t55 = select.Where(a => a.testFieldBoolNullable.Value).Limit(10).ToList(); + + var t111 = select.Where(a => a.testFieldBool == true && a.Id > 0).Limit(10).ToList(); + var t222 = select.Where(a => a.testFieldBool != true && a.Id > 0).Limit(10).ToList(); + var t333 = select.Where(a => a.testFieldBool == false && a.Id > 0).Limit(10).ToList(); + var t444 = select.Where(a => !a.testFieldBool && a.Id > 0).Limit(10).ToList(); + var t555 = select.Where(a => a.testFieldBool && a.Id > 0).Limit(10).ToList(); + + var t1111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0).Limit(10).ToList(); + var t2222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0).Limit(10).ToList(); + var t3333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0).Limit(10).ToList(); + var t4444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0).Limit(10).ToList(); + var t5555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0).Limit(10).ToList(); + + var t11111 = select.Where(a => a.testFieldBool == true && a.Id > 0 && a.testFieldBool == true).Limit(10).ToList(); + var t22222 = select.Where(a => a.testFieldBool != true && a.Id > 0 && a.testFieldBool != true).Limit(10).ToList(); + var t33333 = select.Where(a => a.testFieldBool == false && a.Id > 0 && a.testFieldBool == false).Limit(10).ToList(); + var t44444 = select.Where(a => !a.testFieldBool && a.Id > 0 && !a.testFieldBool).Limit(10).ToList(); + var t55555 = select.Where(a => a.testFieldBool && a.Id > 0 && a.testFieldBool).Limit(10).ToList(); + + var t111111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0 && a.testFieldBoolNullable == true).Limit(10).ToList(); + var t222222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0 && a.testFieldBoolNullable != true).Limit(10).ToList(); + var t333333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0 && a.testFieldBoolNullable == false).Limit(10).ToList(); + var t444444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0 && !a.testFieldBoolNullable.Value).Limit(10).ToList(); + var t555555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0 && a.testFieldBoolNullable.Value).Limit(10).ToList(); } [Fact] diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/OtherTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/OtherTest.cs index 53427c37..7a21e3a0 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/OtherTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/OtherTest.cs @@ -50,6 +50,30 @@ namespace FreeSql.Tests.SqlServerExpression var t33 = select.Where(a => a.testFieldBoolNullable == false).ToList(); var t44 = select.Where(a => !a.testFieldBoolNullable.Value).ToList(); var t55 = select.Where(a => a.testFieldBoolNullable.Value).ToList(); + + var t111 = select.Where(a => a.testFieldBool == true && a.Id > 0).ToList(); + var t222 = select.Where(a => a.testFieldBool != true && a.Id > 0).ToList(); + var t333 = select.Where(a => a.testFieldBool == false && a.Id > 0).ToList(); + var t444 = select.Where(a => !a.testFieldBool && a.Id > 0).ToList(); + var t555 = select.Where(a => a.testFieldBool && a.Id > 0).ToList(); + + var t1111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0).ToList(); + var t2222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0).ToList(); + var t3333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0).ToList(); + var t4444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0).ToList(); + var t5555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0).ToList(); + + var t11111 = select.Where(a => a.testFieldBool == true && a.Id > 0 && a.testFieldBool == true).ToList(); + var t22222 = select.Where(a => a.testFieldBool != true && a.Id > 0 && a.testFieldBool != true).ToList(); + var t33333 = select.Where(a => a.testFieldBool == false && a.Id > 0 && a.testFieldBool == false).ToList(); + var t44444 = select.Where(a => !a.testFieldBool && a.Id > 0 && !a.testFieldBool).ToList(); + var t55555 = select.Where(a => a.testFieldBool && a.Id > 0 && a.testFieldBool).ToList(); + + var t111111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0 && a.testFieldBoolNullable == true).ToList(); + var t222222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0 && a.testFieldBoolNullable != true).ToList(); + var t333333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0 && a.testFieldBoolNullable == false).ToList(); + var t444444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0 && !a.testFieldBoolNullable.Value).ToList(); + var t555555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0 && a.testFieldBoolNullable.Value).ToList(); } [Fact] diff --git a/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteExpression/OtherTest.cs b/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteExpression/OtherTest.cs index 3e2c3e53..3276034d 100644 --- a/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteExpression/OtherTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteExpression/OtherTest.cs @@ -45,6 +45,30 @@ namespace FreeSql.Tests.SqliteExpression var t33 = select.Where(a => a.BoolNullable == false).ToList(); var t44 = select.Where(a => !a.BoolNullable.Value).ToList(); var t55 = select.Where(a => a.BoolNullable.Value).ToList(); + + var t111 = select.Where(a => a.Bool == true && a.Id > 0).ToList(); + var t222 = select.Where(a => a.Bool != true && a.Id > 0).ToList(); + var t333 = select.Where(a => a.Bool == false && a.Id > 0).ToList(); + var t444 = select.Where(a => !a.Bool && a.Id > 0).ToList(); + var t555 = select.Where(a => a.Bool && a.Id > 0).ToList(); + + var t1111 = select.Where(a => a.BoolNullable == true && a.Id > 0).ToList(); + var t2222 = select.Where(a => a.BoolNullable != true && a.Id > 0).ToList(); + var t3333 = select.Where(a => a.BoolNullable == false && a.Id > 0).ToList(); + var t4444 = select.Where(a => !a.BoolNullable.Value && a.Id > 0).ToList(); + var t5555 = select.Where(a => a.BoolNullable.Value && a.Id > 0).ToList(); + + var t11111 = select.Where(a => a.Bool == true && a.Id > 0 && a.Bool == true).ToList(); + var t22222 = select.Where(a => a.Bool != true && a.Id > 0 && a.Bool != true).ToList(); + var t33333 = select.Where(a => a.Bool == false && a.Id > 0 && a.Bool == false).ToList(); + var t44444 = select.Where(a => !a.Bool && a.Id > 0 && !a.Bool).ToList(); + var t55555 = select.Where(a => a.Bool && a.Id > 0 && a.Bool).ToList(); + + var t111111 = select.Where(a => a.BoolNullable == true && a.Id > 0 && a.BoolNullable == true).ToList(); + var t222222 = select.Where(a => a.BoolNullable != true && a.Id > 0 && a.BoolNullable != true).ToList(); + var t333333 = select.Where(a => a.BoolNullable == false && a.Id > 0 && a.BoolNullable == false).ToList(); + var t444444 = select.Where(a => !a.BoolNullable.Value && a.Id > 0 && !a.BoolNullable.Value).ToList(); + var t555555 = select.Where(a => a.BoolNullable.Value && a.Id > 0 && a.BoolNullable.Value).ToList(); } [Fact] diff --git a/FreeSql/Internal/CommonExpression.cs b/FreeSql/Internal/CommonExpression.cs index 85720257..8e9bbe8e 100644 --- a/FreeSql/Internal/CommonExpression.cs +++ b/FreeSql/Internal/CommonExpression.cs @@ -420,7 +420,7 @@ namespace FreeSql.Internal var left = ExpressionLambdaToSql(leftExp, tsc); var leftMapColumn = SearchColumnByField(tsc._tables, tsc.currentTable, left); - var isLeftMapType = leftMapColumn != null && (leftMapColumn.Attribute.MapType != rightExp.Type || leftMapColumn.CsType != rightExp.Type); + var isLeftMapType = leftMapColumn != null && new[] { "AND", "OR" }.Contains(oper) == false && (leftMapColumn.Attribute.MapType != rightExp.Type || leftMapColumn.CsType != rightExp.Type); ColumnInfo rightMapColumn = null; var isRightMapType = false; if (isLeftMapType) tsc.mapType = leftMapColumn.Attribute.MapType; @@ -435,7 +435,7 @@ namespace FreeSql.Internal if (leftMapColumn == null) { rightMapColumn = SearchColumnByField(tsc._tables, tsc.currentTable, right); - isRightMapType = rightMapColumn != null && (rightMapColumn.Attribute.MapType != leftExp.Type || rightMapColumn.CsType != leftExp.Type); + isRightMapType = rightMapColumn != null && new[] { "AND", "OR" }.Contains(oper) == false && (rightMapColumn.Attribute.MapType != leftExp.Type || rightMapColumn.CsType != leftExp.Type); if (isRightMapType) { tsc.mapType = rightMapColumn.Attribute.MapType; @@ -485,8 +485,10 @@ namespace FreeSql.Internal break; case "AND": case "OR": - left = GetBoolString(left); - right = GetBoolString(right); + if (leftMapColumn != null) left = $"{left} = {formatSql(true, null)}"; + else left = GetBoolString(left); + if (rightMapColumn != null) right = $"{right} = {formatSql(true, null)}"; + else right = GetBoolString(right); break; } tsc.mapType = null;