From 04d8b40f0b0cf5e004cf29668cd58e63bcdd0a17 Mon Sep 17 00:00:00 2001
From: 28810 <28810@YEXIANGQIN>
Date: Fri, 6 Dec 2019 20:20:38 +0800
Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20=E5=A4=9A=E8=A1=A8?=
=?UTF-8?q?=E6=9F=A5=E8=AF=A2=20WhereCascade=EF=BC=8C=E5=A6=82=E6=9E=9C=20?=
=?UTF-8?q?Join=20=E6=B2=A1=E6=9C=89=20On=20=E6=9D=A1=E4=BB=B6=EF=BC=8C?=
=?UTF-8?q?=E5=8F=AF=E8=83=BD=E5=AF=BC=E8=87=B4=E7=94=9F=E6=88=90=E7=9A=84?=
=?UTF-8?q?=20SQL=20=E5=A4=9A=E4=BA=86=E4=B8=80=E4=B8=AA=20AND=20=E5=87=BA?=
=?UTF-8?q?=E9=94=99=EF=BC=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
FreeSql.DbContext/FreeSql.DbContext.xml | 7 +++++++
.../FreeSql.Provider.MySql/Curd/MySqlSelect.cs | 9 +++++++--
.../Default/Curd/OdbcSelect.cs | 9 +++++++--
.../MySql/Curd/OdbcMySqlSelect.cs | 9 +++++++--
.../Oracle/Curd/OdbcOracleSelect.cs | 9 +++++++--
.../PostgreSQL/Curd/OdbcPostgreSQLSelect.cs | 9 +++++++--
.../SqlServer/Curd/OdbcSqlServerSelect.cs | 18 ++++++++++++++----
.../Curd/OracleSelect.cs | 9 +++++++--
.../Curd/PostgreSQLSelect.cs | 9 +++++++--
.../Curd/SqlServerSelect.cs | 18 ++++++++++++++----
.../Curd/SqliteSelect.cs | 9 +++++++--
11 files changed, 91 insertions(+), 24 deletions(-)
diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml
index dc0203b8..d9f91124 100644
--- a/FreeSql.DbContext/FreeSql.DbContext.xml
+++ b/FreeSql.DbContext/FreeSql.DbContext.xml
@@ -110,6 +110,13 @@
清空状态数据
+
+
+ 根据 lambda 条件删除数据
+
+
+
+
添加
diff --git a/Providers/FreeSql.Provider.MySql/Curd/MySqlSelect.cs b/Providers/FreeSql.Provider.MySql/Curd/MySqlSelect.cs
index d745db6d..a40c0d56 100644
--- a/Providers/FreeSql.Provider.MySql/Curd/MySqlSelect.cs
+++ b/Providers/FreeSql.Provider.MySql/Curd/MySqlSelect.cs
@@ -48,8 +48,13 @@ namespace FreeSql.MySql.Curd
if (string.IsNullOrEmpty(tbsfrom[b].NavigateCondition) && string.IsNullOrEmpty(tbsfrom[b].On) && string.IsNullOrEmpty(tbsfrom[b].Cascade)) sb.Append(" ON 1 = 1");
else
{
- sb.Append(" ON ").Append(tbsfrom[b].NavigateCondition ?? tbsfrom[b].On);
- if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false) sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ var onSql = tbsfrom[b].NavigateCondition ?? tbsfrom[b].On;
+ sb.Append(" ON ").Append(onSql);
+ if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false)
+ {
+ if (string.IsNullOrEmpty(onSql)) sb.Append(tbsfrom[b].Cascade);
+ else sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ }
}
}
break;
diff --git a/Providers/FreeSql.Provider.Odbc/Default/Curd/OdbcSelect.cs b/Providers/FreeSql.Provider.Odbc/Default/Curd/OdbcSelect.cs
index bc1895ed..b3f0fb59 100644
--- a/Providers/FreeSql.Provider.Odbc/Default/Curd/OdbcSelect.cs
+++ b/Providers/FreeSql.Provider.Odbc/Default/Curd/OdbcSelect.cs
@@ -62,8 +62,13 @@ namespace FreeSql.Odbc.Default
if (string.IsNullOrEmpty(tbsfrom[b].NavigateCondition) && string.IsNullOrEmpty(tbsfrom[b].On) && string.IsNullOrEmpty(tbsfrom[b].Cascade)) sb.Append(" ON 1 = 1");
else
{
- sb.Append(" ON ").Append(tbsfrom[b].NavigateCondition ?? tbsfrom[b].On);
- if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false) sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ var onSql = tbsfrom[b].NavigateCondition ?? tbsfrom[b].On;
+ sb.Append(" ON ").Append(onSql);
+ if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false)
+ {
+ if (string.IsNullOrEmpty(onSql)) sb.Append(tbsfrom[b].Cascade);
+ else sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ }
}
}
break;
diff --git a/Providers/FreeSql.Provider.Odbc/MySql/Curd/OdbcMySqlSelect.cs b/Providers/FreeSql.Provider.Odbc/MySql/Curd/OdbcMySqlSelect.cs
index 430e812f..f013109b 100644
--- a/Providers/FreeSql.Provider.Odbc/MySql/Curd/OdbcMySqlSelect.cs
+++ b/Providers/FreeSql.Provider.Odbc/MySql/Curd/OdbcMySqlSelect.cs
@@ -48,8 +48,13 @@ namespace FreeSql.Odbc.MySql
if (string.IsNullOrEmpty(tbsfrom[b].NavigateCondition) && string.IsNullOrEmpty(tbsfrom[b].On) && string.IsNullOrEmpty(tbsfrom[b].Cascade)) sb.Append(" ON 1 = 1");
else
{
- sb.Append(" ON ").Append(tbsfrom[b].NavigateCondition ?? tbsfrom[b].On);
- if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false) sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ var onSql = tbsfrom[b].NavigateCondition ?? tbsfrom[b].On;
+ sb.Append(" ON ").Append(onSql);
+ if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false)
+ {
+ if (string.IsNullOrEmpty(onSql)) sb.Append(tbsfrom[b].Cascade);
+ else sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ }
}
}
break;
diff --git a/Providers/FreeSql.Provider.Odbc/Oracle/Curd/OdbcOracleSelect.cs b/Providers/FreeSql.Provider.Odbc/Oracle/Curd/OdbcOracleSelect.cs
index 1e93f77c..83b9f7ca 100644
--- a/Providers/FreeSql.Provider.Odbc/Oracle/Curd/OdbcOracleSelect.cs
+++ b/Providers/FreeSql.Provider.Odbc/Oracle/Curd/OdbcOracleSelect.cs
@@ -50,8 +50,13 @@ namespace FreeSql.Odbc.Oracle
if (string.IsNullOrEmpty(tbsfrom[b].NavigateCondition) && string.IsNullOrEmpty(tbsfrom[b].On) && string.IsNullOrEmpty(tbsfrom[b].Cascade)) sb.Append(" ON 1 = 1");
else
{
- sb.Append(" ON ").Append(tbsfrom[b].NavigateCondition ?? tbsfrom[b].On);
- if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false) sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ var onSql = tbsfrom[b].NavigateCondition ?? tbsfrom[b].On;
+ sb.Append(" ON ").Append(onSql);
+ if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false)
+ {
+ if (string.IsNullOrEmpty(onSql)) sb.Append(tbsfrom[b].Cascade);
+ else sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ }
}
}
break;
diff --git a/Providers/FreeSql.Provider.Odbc/PostgreSQL/Curd/OdbcPostgreSQLSelect.cs b/Providers/FreeSql.Provider.Odbc/PostgreSQL/Curd/OdbcPostgreSQLSelect.cs
index 043feeda..9849d492 100644
--- a/Providers/FreeSql.Provider.Odbc/PostgreSQL/Curd/OdbcPostgreSQLSelect.cs
+++ b/Providers/FreeSql.Provider.Odbc/PostgreSQL/Curd/OdbcPostgreSQLSelect.cs
@@ -48,8 +48,13 @@ namespace FreeSql.Odbc.PostgreSQL
if (string.IsNullOrEmpty(tbsfrom[b].NavigateCondition) && string.IsNullOrEmpty(tbsfrom[b].On) && string.IsNullOrEmpty(tbsfrom[b].Cascade)) sb.Append(" ON 1 = 1");
else
{
- sb.Append(" ON ").Append(tbsfrom[b].NavigateCondition ?? tbsfrom[b].On);
- if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false) sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ var onSql = tbsfrom[b].NavigateCondition ?? tbsfrom[b].On;
+ sb.Append(" ON ").Append(onSql);
+ if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false)
+ {
+ if (string.IsNullOrEmpty(onSql)) sb.Append(tbsfrom[b].Cascade);
+ else sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ }
}
}
break;
diff --git a/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerSelect.cs b/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerSelect.cs
index fa840a15..56b61970 100644
--- a/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerSelect.cs
+++ b/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerSelect.cs
@@ -66,8 +66,13 @@ namespace FreeSql.Odbc.SqlServer
if (string.IsNullOrEmpty(tbsfrom[b].NavigateCondition) && string.IsNullOrEmpty(tbsfrom[b].On) && string.IsNullOrEmpty(tbsfrom[b].Cascade)) sb.Append(" ON 1 = 1");
else
{
- sb.Append(" ON ").Append(tbsfrom[b].NavigateCondition ?? tbsfrom[b].On);
- if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false) sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ var onSql = tbsfrom[b].NavigateCondition ?? tbsfrom[b].On;
+ sb.Append(" ON ").Append(onSql);
+ if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false)
+ {
+ if (string.IsNullOrEmpty(onSql)) sb.Append(tbsfrom[b].Cascade);
+ else sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ }
}
}
break;
@@ -166,8 +171,13 @@ namespace FreeSql.Odbc.SqlServer
if (string.IsNullOrEmpty(tbsfrom[b].NavigateCondition) && string.IsNullOrEmpty(tbsfrom[b].On) && string.IsNullOrEmpty(tbsfrom[b].Cascade)) sb.Append(" ON 1 = 1");
else
{
- sb.Append(" ON ").Append(tbsfrom[b].NavigateCondition ?? tbsfrom[b].On);
- if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false) sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ var onSql = tbsfrom[b].NavigateCondition ?? tbsfrom[b].On;
+ sb.Append(" ON ").Append(onSql);
+ if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false)
+ {
+ if (string.IsNullOrEmpty(onSql)) sb.Append(tbsfrom[b].Cascade);
+ else sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ }
}
}
break;
diff --git a/Providers/FreeSql.Provider.Oracle/Curd/OracleSelect.cs b/Providers/FreeSql.Provider.Oracle/Curd/OracleSelect.cs
index 290dc859..b2349ef0 100644
--- a/Providers/FreeSql.Provider.Oracle/Curd/OracleSelect.cs
+++ b/Providers/FreeSql.Provider.Oracle/Curd/OracleSelect.cs
@@ -50,8 +50,13 @@ namespace FreeSql.Oracle.Curd
if (string.IsNullOrEmpty(tbsfrom[b].NavigateCondition) && string.IsNullOrEmpty(tbsfrom[b].On) && string.IsNullOrEmpty(tbsfrom[b].Cascade)) sb.Append(" ON 1 = 1");
else
{
- sb.Append(" ON ").Append(tbsfrom[b].NavigateCondition ?? tbsfrom[b].On);
- if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false) sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ var onSql = tbsfrom[b].NavigateCondition ?? tbsfrom[b].On;
+ sb.Append(" ON ").Append(onSql);
+ if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false)
+ {
+ if (string.IsNullOrEmpty(onSql)) sb.Append(tbsfrom[b].Cascade);
+ else sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ }
}
}
break;
diff --git a/Providers/FreeSql.Provider.PostgreSQL/Curd/PostgreSQLSelect.cs b/Providers/FreeSql.Provider.PostgreSQL/Curd/PostgreSQLSelect.cs
index 1e8faf08..928d91c6 100644
--- a/Providers/FreeSql.Provider.PostgreSQL/Curd/PostgreSQLSelect.cs
+++ b/Providers/FreeSql.Provider.PostgreSQL/Curd/PostgreSQLSelect.cs
@@ -48,8 +48,13 @@ namespace FreeSql.PostgreSQL.Curd
if (string.IsNullOrEmpty(tbsfrom[b].NavigateCondition) && string.IsNullOrEmpty(tbsfrom[b].On) && string.IsNullOrEmpty(tbsfrom[b].Cascade)) sb.Append(" ON 1 = 1");
else
{
- sb.Append(" ON ").Append(tbsfrom[b].NavigateCondition ?? tbsfrom[b].On);
- if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false) sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ var onSql = tbsfrom[b].NavigateCondition ?? tbsfrom[b].On;
+ sb.Append(" ON ").Append(onSql);
+ if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false)
+ {
+ if (string.IsNullOrEmpty(onSql)) sb.Append(tbsfrom[b].Cascade);
+ else sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ }
}
}
break;
diff --git a/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerSelect.cs b/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerSelect.cs
index 3eacc1e5..c3518557 100644
--- a/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerSelect.cs
+++ b/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerSelect.cs
@@ -66,8 +66,13 @@ namespace FreeSql.SqlServer.Curd
if (string.IsNullOrEmpty(tbsfrom[b].NavigateCondition) && string.IsNullOrEmpty(tbsfrom[b].On) && string.IsNullOrEmpty(tbsfrom[b].Cascade)) sb.Append(" ON 1 = 1");
else
{
- sb.Append(" ON ").Append(tbsfrom[b].NavigateCondition ?? tbsfrom[b].On);
- if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false) sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ var onSql = tbsfrom[b].NavigateCondition ?? tbsfrom[b].On;
+ sb.Append(" ON ").Append(onSql);
+ if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false)
+ {
+ if (string.IsNullOrEmpty(onSql)) sb.Append(tbsfrom[b].Cascade);
+ else sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ }
}
}
break;
@@ -166,8 +171,13 @@ namespace FreeSql.SqlServer.Curd
if (string.IsNullOrEmpty(tbsfrom[b].NavigateCondition) && string.IsNullOrEmpty(tbsfrom[b].On) && string.IsNullOrEmpty(tbsfrom[b].Cascade)) sb.Append(" ON 1 = 1");
else
{
- sb.Append(" ON ").Append(tbsfrom[b].NavigateCondition ?? tbsfrom[b].On);
- if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false) sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ var onSql = tbsfrom[b].NavigateCondition ?? tbsfrom[b].On;
+ sb.Append(" ON ").Append(onSql);
+ if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false)
+ {
+ if (string.IsNullOrEmpty(onSql)) sb.Append(tbsfrom[b].Cascade);
+ else sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ }
}
}
break;
diff --git a/Providers/FreeSql.Provider.Sqlite/Curd/SqliteSelect.cs b/Providers/FreeSql.Provider.Sqlite/Curd/SqliteSelect.cs
index dc65ab68..ba3af794 100644
--- a/Providers/FreeSql.Provider.Sqlite/Curd/SqliteSelect.cs
+++ b/Providers/FreeSql.Provider.Sqlite/Curd/SqliteSelect.cs
@@ -48,8 +48,13 @@ namespace FreeSql.Sqlite.Curd
if (string.IsNullOrEmpty(tbsfrom[b].NavigateCondition) && string.IsNullOrEmpty(tbsfrom[b].On) && string.IsNullOrEmpty(tbsfrom[b].Cascade)) sb.Append(" ON 1 = 1");
else
{
- sb.Append(" ON ").Append(tbsfrom[b].NavigateCondition ?? tbsfrom[b].On);
- if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false) sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ var onSql = tbsfrom[b].NavigateCondition ?? tbsfrom[b].On;
+ sb.Append(" ON ").Append(onSql);
+ if (string.IsNullOrEmpty(tbsfrom[b].Cascade) == false)
+ {
+ if (string.IsNullOrEmpty(onSql)) sb.Append(tbsfrom[b].Cascade);
+ else sb.Append(" AND (").Append(tbsfrom[b].Cascade).Append(")");
+ }
}
}
break;