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;