diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index 91534b2e5..c21ae6656 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -3289,6 +3289,13 @@ + + + 执行SQL语句,返回更新后的记录 + 注意:此方法只有 Postgresql/SqlServer 有效果 + + + 指定事务对象 @@ -3633,6 +3640,177 @@ + + + 测试数据库是否连接正确,本方法执行如下命令: + MySql/SqlServer/PostgreSQL/达梦/人大金仓/神通: SELECT 1 + Oracle: SELECT 1 FROM dual + + 命令超时设置(秒) + + true: 成功, false: 失败 + + + + 查询,若使用读写分离,查询【从库】条件cmdText.StartsWith("SELECT "),否则查询【主库】 + + + + + + + + + + 查询,ExecuteReaderAsync(dr => {}, "select * from user where age > @age", new { age = 25 }) + 提示:parms 参数还可以传 Dictionary<string, object> + + + + + + + + + 查询 + + + + + + + + + 查询,ExecuteArrayAsync("select * from user where age > @age", new { age = 25 }) + 提示:parms 参数还可以传 Dictionary<string, object> + + + + + + + + + 查询 + + + + + + + + + 查询,ExecuteDataSetAsync("select * from user where age > @age; select 2", new { age = 25 }) + 提示:parms 参数还可以传 Dictionary<string, object> + + + + + + + + + 查询 + + + + + + + + + 查询,ExecuteDataTableAsync("select * from user where age > @age", new { age = 25 }) + 提示:parms 参数还可以传 Dictionary<string, object> + + + + + + + + + 在【主库】执行 + + + + + + + + + 在【主库】执行,ExecuteNonQueryAsync("delete from user where age > @age", new { age = 25 }) + 提示:parms 参数还可以传 Dictionary<string, object> + + + + + + + + + 在【主库】执行 + + + + + + + + + 在【主库】执行,ExecuteScalarAsync("select 1 from user where age > @age", new { age = 25 }) + 提示:parms 参数还可以传 Dictionary<string, object> + + + + + + + + + 执行SQL返回对象集合,QueryAsync<User>("select * from user where age > @age", new SqlParameter { ParameterName = "age", Value = 25 }) + + + + + + + + + + + 执行SQL返回对象集合,QueryAsync<User>("select * from user where age > @age", new { age = 25 }) + 提示:parms 参数还可以传 Dictionary<string, object> + + + + + + + + + + 执行SQL返回对象集合,Query<User>("select * from user where age > @age; select * from address", new SqlParameter { ParameterName = "age", Value = 25 }) + + + + + + + + + + + + 执行SQL返回对象集合,Query<User, Address>("select * from user where age > @age; select * from address", new { age = 25 }) + 提示:parms 参数还可以传 Dictionary<string, object> + + + + + + + + 可自定义解析表达式 @@ -4632,6 +4810,12 @@ 超时 + + + 获取资源 + + + 使用完毕后,归还资源 @@ -4707,6 +4891,12 @@ 资源对象 + + + 从对象池获取对象成功的时候触发,通过该方法统计或初始化对象 + + 资源对象 + 归还对象给对象池的时候触发 @@ -6186,3 +6376,126 @@ + + + + + 插入数据,传入实体集合 + + + + + + + + 插入数据,传入实体集合 + + + + + + + + 插入或更新数据,此功能依赖数据库特性(低版本可能不支持),参考如下: + MySql 5.6+: on duplicate key update + PostgreSQL 9.4+: on conflict do update + SqlServer 2008+: merge into + Oracle 11+: merge into + Sqlite: replace into + DuckDB: on conflict do update + 达梦: merge into + 人大金仓:on conflict do update + 神通:merge into + MsAccess:不支持 + 注意区别:FreeSql.Repository 仓储也有 InsertOrUpdate 方法(不依赖数据库特性) + + + + + + + 修改数据 + + + + + + + 修改数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} + + + 主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合 + + + + + 查询数据 + + + + + + + 查询数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} + + + 主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合 + + + + + 删除数据 + + + + + + + 删除数据,传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} + + + 主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合 + + + + + 开启事务(不支持异步) + v1.5.0 关闭了线程事务超时自动提交的机制 + + 事务体 () => {} + + + + 开启事务(不支持异步) + v1.5.0 关闭了线程事务超时自动提交的机制 + + + 事务体 () => {} + + + + 数据库访问对象 + + + + + 所有拦截方法都在这里 + + + + + CodeFirst 模式开发相关方法 + + + + + DbFirst 模式开发相关方法 + + + + + 全局过滤设置,可默认附加为 Select/Update/Delete 条件 + + + + diff --git a/Providers/FreeSql.Provider.ClickHouse/Curd/ClickHouseSelect.cs b/Providers/FreeSql.Provider.ClickHouse/Curd/ClickHouseSelect.cs index 868414c90..58b617277 100644 --- a/Providers/FreeSql.Provider.ClickHouse/Curd/ClickHouseSelect.cs +++ b/Providers/FreeSql.Provider.ClickHouse/Curd/ClickHouseSelect.cs @@ -39,7 +39,7 @@ namespace FreeSql.ClickHouse.Curd sb.Append(_select); if (_distinct) sb.Append("DISTINCT "); sb.Append(field).Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.Custom/Curd/CustomSelect.cs b/Providers/FreeSql.Provider.Custom/Curd/CustomSelect.cs index 7379a1a9e..341bc2e4c 100644 --- a/Providers/FreeSql.Provider.Custom/Curd/CustomSelect.cs +++ b/Providers/FreeSql.Provider.Custom/Curd/CustomSelect.cs @@ -41,7 +41,7 @@ namespace FreeSql.Custom throw new NotImplementedException(CoreErrorStrings.S_NotImplementSkipOffset("Custom")); sb.Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.Custom/MySql/Curd/CustomMySqlSelect.cs b/Providers/FreeSql.Provider.Custom/MySql/Curd/CustomMySqlSelect.cs index df88e9243..80bc8c8bc 100644 --- a/Providers/FreeSql.Provider.Custom/MySql/Curd/CustomMySqlSelect.cs +++ b/Providers/FreeSql.Provider.Custom/MySql/Curd/CustomMySqlSelect.cs @@ -36,7 +36,7 @@ namespace FreeSql.Custom.MySql sb.Append(_select); if (_distinct) sb.Append("DISTINCT "); sb.Append(field).Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.Custom/Oracle/Curd/CustomOracleSelect.cs b/Providers/FreeSql.Provider.Custom/Oracle/Curd/CustomOracleSelect.cs index 7a8086e1a..82ceef280 100644 --- a/Providers/FreeSql.Provider.Custom/Oracle/Curd/CustomOracleSelect.cs +++ b/Providers/FreeSql.Provider.Custom/Oracle/Curd/CustomOracleSelect.cs @@ -35,7 +35,7 @@ namespace FreeSql.Custom.Oracle sbunion.Append(_select); if (_distinct) sbunion.Append("DISTINCT "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); var isRownum = string.IsNullOrEmpty(_orderby) && _skip > 0; diff --git a/Providers/FreeSql.Provider.Custom/PostgreSQL/Curd/CustomPostgreSQLSelect.cs b/Providers/FreeSql.Provider.Custom/PostgreSQL/Curd/CustomPostgreSQLSelect.cs index 7fc4161bd..f69371c4e 100644 --- a/Providers/FreeSql.Provider.Custom/PostgreSQL/Curd/CustomPostgreSQLSelect.cs +++ b/Providers/FreeSql.Provider.Custom/PostgreSQL/Curd/CustomPostgreSQLSelect.cs @@ -36,7 +36,7 @@ namespace FreeSql.Custom.PostgreSQL sb.Append(_select); if (_distinct) sb.Append("DISTINCT "); sb.Append(field).Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.Custom/SqlServer/Curd/CustomSqlServerSelect.cs b/Providers/FreeSql.Provider.Custom/SqlServer/Curd/CustomSqlServerSelect.cs index bf0992983..9ecc10c2b 100644 --- a/Providers/FreeSql.Provider.Custom/SqlServer/Curd/CustomSqlServerSelect.cs +++ b/Providers/FreeSql.Provider.Custom/SqlServer/Curd/CustomSqlServerSelect.cs @@ -63,7 +63,7 @@ namespace FreeSql.Custom.SqlServer if (_skip > 0) // 注意这个判断,大于 0 才使用 ROW_NUMBER ,否则属于第一页直接使用 TOP rownum = $", ROW_NUMBER() OVER({_orderby.Trim('\r', '\n', ' ')}) AS __rownum__"; } - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); if (string.IsNullOrEmpty(rownum) == false && field == "*") sb.Append(tbsfrom[0].Alias).Append("."); //#1519 bug @@ -191,7 +191,7 @@ namespace FreeSql.Custom.SqlServer if (_skip <= 0 && _limit > 0) sb.Append("TOP ").Append(_limit).Append(" "); sb.Append(field); sb.Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.Dameng/Curd/DamengSelect.cs b/Providers/FreeSql.Provider.Dameng/Curd/DamengSelect.cs index 89536822a..5696a13c8 100644 --- a/Providers/FreeSql.Provider.Dameng/Curd/DamengSelect.cs +++ b/Providers/FreeSql.Provider.Dameng/Curd/DamengSelect.cs @@ -35,7 +35,7 @@ namespace FreeSql.Dameng.Curd sbunion.Append(_select); if (_distinct) sbunion.Append("DISTINCT "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); var isRownum = string.IsNullOrEmpty(_orderby) && _skip > 0; diff --git a/Providers/FreeSql.Provider.Duckdb/Curd/DuckdbSelect.cs b/Providers/FreeSql.Provider.Duckdb/Curd/DuckdbSelect.cs index c4d20d390..a0a75390b 100644 --- a/Providers/FreeSql.Provider.Duckdb/Curd/DuckdbSelect.cs +++ b/Providers/FreeSql.Provider.Duckdb/Curd/DuckdbSelect.cs @@ -36,7 +36,7 @@ namespace FreeSql.Duckdb.Curd sb.Append(_select); if (_distinct) sb.Append("DISTINCT "); sb.Append(field).Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.Firebird/Curd/FirebirdSelect.cs b/Providers/FreeSql.Provider.Firebird/Curd/FirebirdSelect.cs index 07410bd2c..d22e9656a 100644 --- a/Providers/FreeSql.Provider.Firebird/Curd/FirebirdSelect.cs +++ b/Providers/FreeSql.Provider.Firebird/Curd/FirebirdSelect.cs @@ -41,7 +41,7 @@ namespace FreeSql.Firebird.Curd if (_distinct) sb.Append("DISTINCT "); sb.Append(field).Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.GBase/Curd/GBaseSelect.cs b/Providers/FreeSql.Provider.GBase/Curd/GBaseSelect.cs index 73b07b5f0..c9d3c7c2c 100644 --- a/Providers/FreeSql.Provider.GBase/Curd/GBaseSelect.cs +++ b/Providers/FreeSql.Provider.GBase/Curd/GBaseSelect.cs @@ -41,7 +41,7 @@ namespace FreeSql.GBase.Curd if (_distinct) sb.Append("DISTINCT "); sb.Append(field).Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.KingbaseES/Curd/KingbaseESSelect.cs b/Providers/FreeSql.Provider.KingbaseES/Curd/KingbaseESSelect.cs index a6e6edc05..9b444a882 100644 --- a/Providers/FreeSql.Provider.KingbaseES/Curd/KingbaseESSelect.cs +++ b/Providers/FreeSql.Provider.KingbaseES/Curd/KingbaseESSelect.cs @@ -36,7 +36,7 @@ namespace FreeSql.KingbaseES sb.Append(_select); if (_distinct) sb.Append("DISTINCT "); sb.Append(field).Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.MsAccess/Curd/MsAccessSelect.cs b/Providers/FreeSql.Provider.MsAccess/Curd/MsAccessSelect.cs index c7ad51033..5ec8bb777 100644 --- a/Providers/FreeSql.Provider.MsAccess/Curd/MsAccessSelect.cs +++ b/Providers/FreeSql.Provider.MsAccess/Curd/MsAccessSelect.cs @@ -43,7 +43,7 @@ namespace FreeSql.MsAccess.Curd sb.Append(" \r\nFROM "); var fromIndex = sb.Length; var ioinCounter = 0; - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.MySql/Curd/MySqlSelect.cs b/Providers/FreeSql.Provider.MySql/Curd/MySqlSelect.cs index 04762d025..2bd9243f0 100644 --- a/Providers/FreeSql.Provider.MySql/Curd/MySqlSelect.cs +++ b/Providers/FreeSql.Provider.MySql/Curd/MySqlSelect.cs @@ -36,7 +36,7 @@ namespace FreeSql.MySql.Curd sb.Append(_select); if (_distinct) sb.Append("DISTINCT "); sb.Append(field).Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.Odbc/Default/Curd/OdbcSelect.cs b/Providers/FreeSql.Provider.Odbc/Default/Curd/OdbcSelect.cs index 1f88f4d5f..2c8b4d719 100644 --- a/Providers/FreeSql.Provider.Odbc/Default/Curd/OdbcSelect.cs +++ b/Providers/FreeSql.Provider.Odbc/Default/Curd/OdbcSelect.cs @@ -41,7 +41,7 @@ namespace FreeSql.Odbc.Default throw new NotImplementedException(CoreErrorStrings.S_NotImplementSkipOffset("Default")); sb.Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.Odbc/MySql/Curd/OdbcMySqlSelect.cs b/Providers/FreeSql.Provider.Odbc/MySql/Curd/OdbcMySqlSelect.cs index 8b3ee6ae6..3c8035760 100644 --- a/Providers/FreeSql.Provider.Odbc/MySql/Curd/OdbcMySqlSelect.cs +++ b/Providers/FreeSql.Provider.Odbc/MySql/Curd/OdbcMySqlSelect.cs @@ -36,7 +36,7 @@ namespace FreeSql.Odbc.MySql sb.Append(_select); if (_distinct) sb.Append("DISTINCT "); sb.Append(field).Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.Odbc/Oracle/Curd/OdbcOracleSelect.cs b/Providers/FreeSql.Provider.Odbc/Oracle/Curd/OdbcOracleSelect.cs index 3a876c73f..8199a8bf1 100644 --- a/Providers/FreeSql.Provider.Odbc/Oracle/Curd/OdbcOracleSelect.cs +++ b/Providers/FreeSql.Provider.Odbc/Oracle/Curd/OdbcOracleSelect.cs @@ -35,7 +35,7 @@ namespace FreeSql.Odbc.Oracle sbunion.Append(_select); if (_distinct) sbunion.Append("DISTINCT "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); var isRownum = string.IsNullOrEmpty(_orderby) && _skip > 0; diff --git a/Providers/FreeSql.Provider.Odbc/PostgreSQL/Curd/OdbcPostgreSQLSelect.cs b/Providers/FreeSql.Provider.Odbc/PostgreSQL/Curd/OdbcPostgreSQLSelect.cs index fae515171..01f9a5a5f 100644 --- a/Providers/FreeSql.Provider.Odbc/PostgreSQL/Curd/OdbcPostgreSQLSelect.cs +++ b/Providers/FreeSql.Provider.Odbc/PostgreSQL/Curd/OdbcPostgreSQLSelect.cs @@ -36,7 +36,7 @@ namespace FreeSql.Odbc.PostgreSQL sb.Append(_select); if (_distinct) sb.Append("DISTINCT "); sb.Append(field).Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerSelect.cs b/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerSelect.cs index 3193b7c1a..dd931e68d 100644 --- a/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerSelect.cs +++ b/Providers/FreeSql.Provider.Odbc/SqlServer/Curd/OdbcSqlServerSelect.cs @@ -63,7 +63,7 @@ namespace FreeSql.Odbc.SqlServer if (_skip > 0) // 注意这个判断,大于 0 才使用 ROW_NUMBER ,否则属于第一页直接使用 TOP rownum = $", ROW_NUMBER() OVER({_orderby.Trim('\r', '\n', ' ')}) AS __rownum__"; } - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); if (string.IsNullOrEmpty(rownum) == false && field == "*") sb.Append(tbsfrom[0].Alias).Append("."); //#1519 bug @@ -191,7 +191,7 @@ namespace FreeSql.Odbc.SqlServer if (_skip <= 0 && _limit > 0) sb.Append("TOP ").Append(_limit).Append(" "); sb.Append(field); sb.Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.Oracle/Curd/OracleSelect.cs b/Providers/FreeSql.Provider.Oracle/Curd/OracleSelect.cs index c1de966a2..d4faef90a 100644 --- a/Providers/FreeSql.Provider.Oracle/Curd/OracleSelect.cs +++ b/Providers/FreeSql.Provider.Oracle/Curd/OracleSelect.cs @@ -35,7 +35,7 @@ namespace FreeSql.Oracle.Curd sbunion.Append(_select); if (_distinct) sbunion.Append("DISTINCT "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); var isRownum = string.IsNullOrEmpty(_orderby) && _skip > 0; diff --git a/Providers/FreeSql.Provider.PostgreSQL/Curd/PostgreSQLSelect.cs b/Providers/FreeSql.Provider.PostgreSQL/Curd/PostgreSQLSelect.cs index bd1097121..c4603b1af 100644 --- a/Providers/FreeSql.Provider.PostgreSQL/Curd/PostgreSQLSelect.cs +++ b/Providers/FreeSql.Provider.PostgreSQL/Curd/PostgreSQLSelect.cs @@ -36,7 +36,7 @@ namespace FreeSql.PostgreSQL.Curd sb.Append(_select); if (_distinct) sb.Append("DISTINCT "); sb.Append(field).Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.QuestDb/Curd/QuestDbSelect.cs b/Providers/FreeSql.Provider.QuestDb/Curd/QuestDbSelect.cs index 5fa429ef1..029e54b42 100644 --- a/Providers/FreeSql.Provider.QuestDb/Curd/QuestDbSelect.cs +++ b/Providers/FreeSql.Provider.QuestDb/Curd/QuestDbSelect.cs @@ -40,7 +40,7 @@ namespace FreeSql.QuestDb.Curd sb.Append(_select); if (_distinct) sb.Append("DISTINCT "); sb.Append(field).Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.ShenTong/Curd/ShenTongSelect.cs b/Providers/FreeSql.Provider.ShenTong/Curd/ShenTongSelect.cs index 7c20e11e1..9ac940178 100644 --- a/Providers/FreeSql.Provider.ShenTong/Curd/ShenTongSelect.cs +++ b/Providers/FreeSql.Provider.ShenTong/Curd/ShenTongSelect.cs @@ -36,7 +36,7 @@ namespace FreeSql.ShenTong.Curd sb.Append(_select); if (_distinct) sb.Append("DISTINCT "); sb.Append(field).Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerSelect.cs b/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerSelect.cs index aae6ffcdf..1c2bfe858 100644 --- a/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerSelect.cs +++ b/Providers/FreeSql.Provider.SqlServer/Curd/SqlServerSelect.cs @@ -63,7 +63,7 @@ namespace FreeSql.SqlServer.Curd if (_skip > 0) // 注意这个判断,大于 0 才使用 ROW_NUMBER ,否则属于第一页直接使用 TOP rownum = $", ROW_NUMBER() OVER({_orderby.Trim('\r', '\n', ' ')}) AS __rownum__"; } - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); if (string.IsNullOrEmpty(rownum) == false && field == "*") sb.Append(tbsfrom[0].Alias).Append("."); //#1519 bug @@ -191,7 +191,7 @@ namespace FreeSql.SqlServer.Curd if (_skip <= 0 && _limit > 0) sb.Append("TOP ").Append(_limit).Append(" "); sb.Append(field); sb.Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.Sqlite/Curd/SqliteSelect.cs b/Providers/FreeSql.Provider.Sqlite/Curd/SqliteSelect.cs index ce8cfc0d9..74353904b 100644 --- a/Providers/FreeSql.Provider.Sqlite/Curd/SqliteSelect.cs +++ b/Providers/FreeSql.Provider.Sqlite/Curd/SqliteSelect.cs @@ -36,7 +36,7 @@ namespace FreeSql.Sqlite.Curd sb.Append(_select); if (_distinct) sb.Append("DISTINCT "); sb.Append(field).Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.TDengine/Curd/TDengineSelect.cs b/Providers/FreeSql.Provider.TDengine/Curd/TDengineSelect.cs index 056fddf67..475504f0c 100644 --- a/Providers/FreeSql.Provider.TDengine/Curd/TDengineSelect.cs +++ b/Providers/FreeSql.Provider.TDengine/Curd/TDengineSelect.cs @@ -48,7 +48,7 @@ namespace FreeSql.TDengine.Curd sb.Append(_select); if (_distinct) sb.Append("DISTINCT "); sb.Append(field).Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) { diff --git a/Providers/FreeSql.Provider.Xugu/Curd/XuguSelect.cs b/Providers/FreeSql.Provider.Xugu/Curd/XuguSelect.cs index c889a4590..9c47fee86 100644 --- a/Providers/FreeSql.Provider.Xugu/Curd/XuguSelect.cs +++ b/Providers/FreeSql.Provider.Xugu/Curd/XuguSelect.cs @@ -36,7 +36,7 @@ namespace FreeSql.Xugu.Curd sb.Append(_select); if (_distinct) sb.Append("DISTINCT "); sb.Append(field).Append(" \r\nFROM "); - var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From).ToArray(); + var tbsjoin = _tables.Where(a => a.Type != SelectTableInfoType.From && a.Type != SelectTableInfoType.Parent).ToArray(); var tbsfrom = _tables.Where(a => a.Type == SelectTableInfoType.From).ToArray(); for (var a = 0; a < tbsfrom.Length; a++) {