From 55000de8c598207578ad1a59ff75f808dde5bb0a Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Sat, 23 Nov 2024 12:57:54 +0800 Subject: [PATCH] =?UTF-8?q?v3.5.100-preview20241123=20-=20=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E5=88=B0=20.net90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Directory.Build.props | 2 +- Examples/base_entity/base_entity.csproj | 1 - .../FreeSql.Extensions.AggregateRoot.csproj | 2 +- .../FreeSql.Extensions.BaseEntity.csproj | 2 +- .../FreeSql.Extensions.JsonMap.csproj | 2 +- .../FreeSql.Extensions.LazyLoading.csproj | 2 +- .../FreeSql.Extensions.Linq.csproj | 2 +- .../FreeSql.Extensions.ZeroEntity.csproj | 2 +- .../FreeSql.Generator.csproj | 2 +- FreeSql.All/FreeSql.All.csproj | 2 +- FreeSql.DbContext/FreeSql.DbContext.csproj | 14 +- FreeSql.Repository/FreeSql.Repository.csproj | 4 +- FreeSql/FreeSql.csproj | 2 +- FreeSql/FreeSql.xml | 198 +++++++++--------- .../FreeSql.Provider.ClickHouse.csproj | 2 +- .../FreeSql.Provider.Custom.csproj | 2 +- .../FreeSql.Provider.Dameng.csproj | 2 +- .../DuckdbAdo/DuckdbAdo.cs | 1 + .../FreeSql.Provider.Duckdb/DuckdbUtils.cs | 1 + .../FreeSql.Provider.Duckdb.csproj | 10 +- .../FreeSql.Provider.Firebird.csproj | 8 +- .../FreeSql.Provider.GBase.csproj | 2 +- .../FreeSql.Provider.KingbaseES.csproj | 6 +- .../FreeSql.Provider.MsAccess.csproj | 2 +- .../FreeSql.Provider.MySql.csproj | 11 +- .../FreeSql.Provider.MySqlConnector.csproj | 14 +- .../FreeSql.Provider.Odbc.csproj | 2 +- .../FreeSql.Provider.Oracle.csproj | 12 +- .../FreeSql.Provider.OracleOledb.csproj | 2 +- .../FreeSql.Provider.PostgreSQL.csproj | 8 +- .../PostgreSQLAdo/PostgreSQLTypesConverter.cs | 111 +++++++++- .../PostgreSQLTypesExtensions.cs | 2 +- .../FreeSql.Provider.QuestDb.csproj | 2 +- .../FreeSql.Provider.ShenTong.csproj | 2 +- .../FreeSql.Provider.SqlServer.csproj | 12 +- ...FreeSql.Provider.SqlServerForSystem.csproj | 6 +- .../FreeSql.Provider.Sqlite.csproj | 2 +- .../FreeSql.Provider.SqliteCore.csproj | 2 +- .../FreeSql.Provider.Xugu.csproj | 2 +- 39 files changed, 280 insertions(+), 183 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 7db6e7191..725e8932b 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -12,7 +12,7 @@ diff --git a/Examples/base_entity/base_entity.csproj b/Examples/base_entity/base_entity.csproj index 9dc7e296a..a6df2b756 100644 --- a/Examples/base_entity/base_entity.csproj +++ b/Examples/base_entity/base_entity.csproj @@ -15,7 +15,6 @@ - diff --git a/Extensions/FreeSql.Extensions.AggregateRoot/FreeSql.Extensions.AggregateRoot.csproj b/Extensions/FreeSql.Extensions.AggregateRoot/FreeSql.Extensions.AggregateRoot.csproj index 6581dff69..16cf1f289 100644 --- a/Extensions/FreeSql.Extensions.AggregateRoot/FreeSql.Extensions.AggregateRoot.csproj +++ b/Extensions/FreeSql.Extensions.AggregateRoot/FreeSql.Extensions.AggregateRoot.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/Extensions/FreeSql.Extensions.BaseEntity/FreeSql.Extensions.BaseEntity.csproj b/Extensions/FreeSql.Extensions.BaseEntity/FreeSql.Extensions.BaseEntity.csproj index ce12c130c..23bd86112 100644 --- a/Extensions/FreeSql.Extensions.BaseEntity/FreeSql.Extensions.BaseEntity.csproj +++ b/Extensions/FreeSql.Extensions.BaseEntity/FreeSql.Extensions.BaseEntity.csproj @@ -19,7 +19,7 @@ key.snk false latest - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/Extensions/FreeSql.Extensions.JsonMap/FreeSql.Extensions.JsonMap.csproj b/Extensions/FreeSql.Extensions.JsonMap/FreeSql.Extensions.JsonMap.csproj index 937570027..f5bce1549 100644 --- a/Extensions/FreeSql.Extensions.JsonMap/FreeSql.Extensions.JsonMap.csproj +++ b/Extensions/FreeSql.Extensions.JsonMap/FreeSql.Extensions.JsonMap.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/Extensions/FreeSql.Extensions.LazyLoading/FreeSql.Extensions.LazyLoading.csproj b/Extensions/FreeSql.Extensions.LazyLoading/FreeSql.Extensions.LazyLoading.csproj index 381868ecc..fb102e8cc 100644 --- a/Extensions/FreeSql.Extensions.LazyLoading/FreeSql.Extensions.LazyLoading.csproj +++ b/Extensions/FreeSql.Extensions.LazyLoading/FreeSql.Extensions.LazyLoading.csproj @@ -15,7 +15,7 @@ $(AssemblyName) true true - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/Extensions/FreeSql.Extensions.Linq/FreeSql.Extensions.Linq.csproj b/Extensions/FreeSql.Extensions.Linq/FreeSql.Extensions.Linq.csproj index 227fb1e41..1dfd71ee0 100644 --- a/Extensions/FreeSql.Extensions.Linq/FreeSql.Extensions.Linq.csproj +++ b/Extensions/FreeSql.Extensions.Linq/FreeSql.Extensions.Linq.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/Extensions/FreeSql.Extensions.ZeroEntity/FreeSql.Extensions.ZeroEntity.csproj b/Extensions/FreeSql.Extensions.ZeroEntity/FreeSql.Extensions.ZeroEntity.csproj index 8770ab876..ae5ce181d 100644 --- a/Extensions/FreeSql.Extensions.ZeroEntity/FreeSql.Extensions.ZeroEntity.csproj +++ b/Extensions/FreeSql.Extensions.ZeroEntity/FreeSql.Extensions.ZeroEntity.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/Extensions/FreeSql.Generator/FreeSql.Generator.csproj b/Extensions/FreeSql.Generator/FreeSql.Generator.csproj index 6c8e04278..014c6c68e 100644 --- a/Extensions/FreeSql.Generator/FreeSql.Generator.csproj +++ b/Extensions/FreeSql.Generator/FreeSql.Generator.csproj @@ -13,7 +13,7 @@ https://github.com/2881099/FreeSql https://github.com/2881099/FreeSql FreeSql DbFirst 实体生成器 - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/FreeSql.All/FreeSql.All.csproj b/FreeSql.All/FreeSql.All.csproj index 46b55b9f8..0fe802877 100644 --- a/FreeSql.All/FreeSql.All.csproj +++ b/FreeSql.All/FreeSql.All.csproj @@ -17,7 +17,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/FreeSql.DbContext/FreeSql.DbContext.csproj b/FreeSql.DbContext/FreeSql.DbContext.csproj index ba90924e9..f049676ee 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.csproj +++ b/FreeSql.DbContext/FreeSql.DbContext.csproj @@ -1,7 +1,7 @@ - net8.0;net7.0;net6.0;net5.0;netstandard2.1;netcoreapp3.1;netstandard2.0;net45;net40 + net9.0;net8.0;net7.0;net6.0;net5.0;netcoreapp3.1;netstandard2.1;netstandard2.0;net45;net40 true FreeSql;ncc;YeXiangQin FreeSql is the ORM in .NetCore, .NetFramework, And Xamarin. It supports Mysql, Postgresql, SqlServer, Oracle, Sqlite, Firebird, Clickhouse, DuckDB, TDengine, QuestDB, Odbc, Oledb, 达梦, 人大金仓, 南大通用, 虚谷, 神舟通用, 翰高, And Access @@ -17,7 +17,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md @@ -35,10 +35,13 @@ net40 - + netcoreapp + + + @@ -58,9 +61,4 @@ - - - - - diff --git a/FreeSql.Repository/FreeSql.Repository.csproj b/FreeSql.Repository/FreeSql.Repository.csproj index e885fc124..ccc20c59d 100644 --- a/FreeSql.Repository/FreeSql.Repository.csproj +++ b/FreeSql.Repository/FreeSql.Repository.csproj @@ -1,7 +1,7 @@ - net8.0;net7.0;net6.0;net5.0;netcoreapp3.1;netstandard2.1;netstandard2.0;net45;net40 + net9.0;net8.0;net7.0;net6.0;net5.0;netcoreapp3.1;netstandard2.1;netstandard2.0;net45;net40 FreeSql;ncc;YeXiangQin FreeSql Implementation of General Repository, Support MySql/SqlServer/PostgreSQL/Oracle/Sqlite/Firebird/Clickhouse/DuckDB/TDengine/QuestDB/达梦/人大金仓/南大通用/虚谷/神舟通用/翰高/Access, and read/write separation、and split table. https://github.com/2881099/FreeSql/wiki/Repository @@ -17,7 +17,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/FreeSql/FreeSql.csproj b/FreeSql/FreeSql.csproj index 0eff1a6e3..e9d57eaa2 100644 --- a/FreeSql/FreeSql.csproj +++ b/FreeSql/FreeSql.csproj @@ -17,7 +17,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index c21ae6656..cb1addf59 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -1660,6 +1660,104 @@ + + + 指定事务对象 + + + + + 原生sql语法条件,Where("id = @id", new { id = 1 }) + 提示:parms 参数还可以传 Dictionary<string, object> + + true 时生效 + sql语法条件 + 参数 + + + + + 传入实体,将主键作为条件 + + 实体 + + + + + 传入实体集合,将主键作为条件 + + 实体集合 + + + + + 传入动态条件,如:主键值 | new[]{主键值1,主键值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1} + + 主键值、主键值集合、实体、实体集合、匿名对象、匿名对象集合 + 是否标识为NOT + + + + + 动态过滤条件 + + + + + + + 禁用全局过滤功能,不传参数时将禁用所有 + + 零个或多个过滤器名字 + + + + + 设置表名规则,可用于分库/分表,参数1:默认表名;返回值:新表名; + + + + + + + 设置表名 + + + + + + + 动态Type,在使用 Delete<object> 后使用本方法,指定实体类型 + + + + + + + 返回即将执行的SQL语句 + + + + + + 执行SQL语句,返回影响的行数 + + + + + + 执行SQL语句,返回被删除的记录 + 注意:此方法只有 Postgresql/SqlServer/Maridb/Firebird/人大金仓 有效果 + + + + + + 指定事务对象 + + + + 指定事务对象 @@ -4205,105 +4303,7 @@ 同步实体类型到数据库(指定表名) 注意:生产环境中谨慎使用 - 实体类型 - 指定表名对比 - 强制同步结构,无视缓存每次都同步 - - - - 根据 System.Type 获取数据库信息 - - - - - - - FreeSql FluentApi 配置实体,方法名与特性相同 - - - - - - - - FreeSql FluentApi 配置实体,方法名与特性相同 - - - - - - - - 获取 FreeSql FluentApi 配置实体的元数据 - - - 未使用ConfigEntity配置时,返回null - - - - 获取实体类核心配置 - - - - - - - 获取所有数据库 - - - - - - 获取指定数据库的表信息,包括表、列详情、主键、唯一键、索引、外键、备注 - - - - - - - 获取指定单表信息,包括列详情、主键、唯一键、索引、备注 - - 表名,如:dbo.table1 - 是否忽略大小写 - - - - - 判断表是否存在 - - 表名,如:dbo.table1 - 是否忽略大小写 - - - - - 获取数据库枚举类型int值 - - - - - - - 获取c#转换,(int)、(long) - - - - - - - 获取c#值 - - - - - - - 获取c#类型,int、long - - - - - + 获取c#类型对象 diff --git a/Providers/FreeSql.Provider.ClickHouse/FreeSql.Provider.ClickHouse.csproj b/Providers/FreeSql.Provider.ClickHouse/FreeSql.Provider.ClickHouse.csproj index d6a582082..77b7c67bb 100644 --- a/Providers/FreeSql.Provider.ClickHouse/FreeSql.Provider.ClickHouse.csproj +++ b/Providers/FreeSql.Provider.ClickHouse/FreeSql.Provider.ClickHouse.csproj @@ -19,7 +19,7 @@ False key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/Providers/FreeSql.Provider.Custom/FreeSql.Provider.Custom.csproj b/Providers/FreeSql.Provider.Custom/FreeSql.Provider.Custom.csproj index ae5fbbb08..a62270790 100644 --- a/Providers/FreeSql.Provider.Custom/FreeSql.Provider.Custom.csproj +++ b/Providers/FreeSql.Provider.Custom/FreeSql.Provider.Custom.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/Providers/FreeSql.Provider.Dameng/FreeSql.Provider.Dameng.csproj b/Providers/FreeSql.Provider.Dameng/FreeSql.Provider.Dameng.csproj index 4d50cd7b4..f55613d9c 100644 --- a/Providers/FreeSql.Provider.Dameng/FreeSql.Provider.Dameng.csproj +++ b/Providers/FreeSql.Provider.Dameng/FreeSql.Provider.Dameng.csproj @@ -15,7 +15,7 @@ $(AssemblyName) true true - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/Providers/FreeSql.Provider.Duckdb/DuckdbAdo/DuckdbAdo.cs b/Providers/FreeSql.Provider.Duckdb/DuckdbAdo/DuckdbAdo.cs index ae55f5817..c3fa1a4ff 100644 --- a/Providers/FreeSql.Provider.Duckdb/DuckdbAdo/DuckdbAdo.cs +++ b/Providers/FreeSql.Provider.Duckdb/DuckdbAdo/DuckdbAdo.cs @@ -10,6 +10,7 @@ using System.Linq; using FreeSql.Internal.CommonProvider; using DuckDB.NET.Data; using static DuckDB.NET.Native.NativeMethods; +using ColumnInfo = FreeSql.Internal.Model.ColumnInfo; namespace FreeSql.Duckdb { diff --git a/Providers/FreeSql.Provider.Duckdb/DuckdbUtils.cs b/Providers/FreeSql.Provider.Duckdb/DuckdbUtils.cs index 14ea176ea..b0bd0a6a3 100644 --- a/Providers/FreeSql.Provider.Duckdb/DuckdbUtils.cs +++ b/Providers/FreeSql.Provider.Duckdb/DuckdbUtils.cs @@ -13,6 +13,7 @@ using System.Numerics; using static DuckDB.NET.Native.NativeMethods; using System.Text; using System.Security.AccessControl; +using ColumnInfo = FreeSql.Internal.Model.ColumnInfo; namespace FreeSql.Duckdb { diff --git a/Providers/FreeSql.Provider.Duckdb/FreeSql.Provider.Duckdb.csproj b/Providers/FreeSql.Provider.Duckdb/FreeSql.Provider.Duckdb.csproj index b60510758..e69f6c6b4 100644 --- a/Providers/FreeSql.Provider.Duckdb/FreeSql.Provider.Duckdb.csproj +++ b/Providers/FreeSql.Provider.Duckdb/FreeSql.Provider.Duckdb.csproj @@ -1,7 +1,7 @@ - net8.0;net7.0;net6.0;netstandard2.0 + net9.0;net8.0;net7.0;net6.0;netstandard2.0 true FreeSql;ncc;YeXiangQin FreeSql + DuckDB is a fast in-process analytical database,supports .NetCore、.NetFramework4.6.1+ @@ -18,24 +18,24 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md - + - + - + net60 diff --git a/Providers/FreeSql.Provider.Firebird/FreeSql.Provider.Firebird.csproj b/Providers/FreeSql.Provider.Firebird/FreeSql.Provider.Firebird.csproj index fb9892b16..93fc741bb 100644 --- a/Providers/FreeSql.Provider.Firebird/FreeSql.Provider.Firebird.csproj +++ b/Providers/FreeSql.Provider.Firebird/FreeSql.Provider.Firebird.csproj @@ -1,7 +1,7 @@ - netstandard2.0;net452 + netstandard2.1;netstandard2.0;net452 true FreeSql;ncc;YeXiangQin FreeSql 数据库实现,基于 Firebird @@ -18,7 +18,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md @@ -27,8 +27,8 @@ - - + + diff --git a/Providers/FreeSql.Provider.GBase/FreeSql.Provider.GBase.csproj b/Providers/FreeSql.Provider.GBase/FreeSql.Provider.GBase.csproj index c3d1bb37c..952ce5237 100644 --- a/Providers/FreeSql.Provider.GBase/FreeSql.Provider.GBase.csproj +++ b/Providers/FreeSql.Provider.GBase/FreeSql.Provider.GBase.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/Providers/FreeSql.Provider.KingbaseES/FreeSql.Provider.KingbaseES.csproj b/Providers/FreeSql.Provider.KingbaseES/FreeSql.Provider.KingbaseES.csproj index 34d74d719..5ad16ea2c 100644 --- a/Providers/FreeSql.Provider.KingbaseES/FreeSql.Provider.KingbaseES.csproj +++ b/Providers/FreeSql.Provider.KingbaseES/FreeSql.Provider.KingbaseES.csproj @@ -1,7 +1,7 @@ - net8.0;net7.0;net6.0;netstandard2.0;net461 + net9.0;net8.0;net7.0;net6.0;netstandard2.0;net461 true FreeSql;ncc;YeXiangQin FreeSql 数据库实现,基于 人大金仓数据库 V008R003/V008R006 Ado.Net (Kdbndp) @@ -15,7 +15,7 @@ $(AssemblyName) true true - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md @@ -50,7 +50,7 @@ ns20;netstandard20 - + net60 diff --git a/Providers/FreeSql.Provider.MsAccess/FreeSql.Provider.MsAccess.csproj b/Providers/FreeSql.Provider.MsAccess/FreeSql.Provider.MsAccess.csproj index 55890cc22..4e38e702e 100644 --- a/Providers/FreeSql.Provider.MsAccess/FreeSql.Provider.MsAccess.csproj +++ b/Providers/FreeSql.Provider.MsAccess/FreeSql.Provider.MsAccess.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/Providers/FreeSql.Provider.MySql/FreeSql.Provider.MySql.csproj b/Providers/FreeSql.Provider.MySql/FreeSql.Provider.MySql.csproj index d9527bed9..6937f9f53 100644 --- a/Providers/FreeSql.Provider.MySql/FreeSql.Provider.MySql.csproj +++ b/Providers/FreeSql.Provider.MySql/FreeSql.Provider.MySql.csproj @@ -1,7 +1,7 @@ - net8.0;net7.0;net6.0;netstandard2.0;net452;net451;net45;net40 + net9.0;net8.0;net7.0;net6.0;netstandard2.1;netstandard2.0;net452;net451;net45;net40 true FreeSql;ncc;YeXiangQin FreeSql 数据库实现,基于 MySql 5.6,Ado.Net 驱动是 MySql.Data(Oracle官方) @@ -18,7 +18,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md @@ -27,7 +27,10 @@ - + + + + @@ -41,7 +44,7 @@ net40 - + net60 diff --git a/Providers/FreeSql.Provider.MySqlConnector/FreeSql.Provider.MySqlConnector.csproj b/Providers/FreeSql.Provider.MySqlConnector/FreeSql.Provider.MySqlConnector.csproj index 2d31ddb6d..104e9fe3f 100644 --- a/Providers/FreeSql.Provider.MySqlConnector/FreeSql.Provider.MySqlConnector.csproj +++ b/Providers/FreeSql.Provider.MySqlConnector/FreeSql.Provider.MySqlConnector.csproj @@ -1,7 +1,7 @@ - net8.0;net7.0;net6.0;netcoreapp3.1;netstandard2.1;netstandard2.0;net45 + net9.0;net8.0;net7.0;net6.0;netstandard2.1;netstandard2.0;net45 true FreeSql;ncc;YeXiangQin FreeSql 数据库实现,基于 MySql 5.6,Ado.Net 驱动是 MySqlConnector @@ -18,7 +18,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md @@ -27,8 +27,12 @@ - - + + + + + + @@ -45,7 +49,7 @@ MySqlConnector - + net60;MySqlConnector diff --git a/Providers/FreeSql.Provider.Odbc/FreeSql.Provider.Odbc.csproj b/Providers/FreeSql.Provider.Odbc/FreeSql.Provider.Odbc.csproj index 04e826c6d..0acbda797 100644 --- a/Providers/FreeSql.Provider.Odbc/FreeSql.Provider.Odbc.csproj +++ b/Providers/FreeSql.Provider.Odbc/FreeSql.Provider.Odbc.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/Providers/FreeSql.Provider.Oracle/FreeSql.Provider.Oracle.csproj b/Providers/FreeSql.Provider.Oracle/FreeSql.Provider.Oracle.csproj index b1c754c5b..453002fe3 100644 --- a/Providers/FreeSql.Provider.Oracle/FreeSql.Provider.Oracle.csproj +++ b/Providers/FreeSql.Provider.Oracle/FreeSql.Provider.Oracle.csproj @@ -1,7 +1,7 @@ - net6.0;net5.0;netstandard2.1;netstandard2.0;net45;net40 + net9.0;net8.0;net7.0;net6.0;net5.0;netcoreapp31;netstandard2.1;net45;net40 true FreeSql;ncc;YeXiangQin FreeSql 数据库实现,基于 Oracle 11 @@ -18,7 +18,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md @@ -27,13 +27,9 @@ - - + + - - - - diff --git a/Providers/FreeSql.Provider.OracleOledb/FreeSql.Provider.OracleOledb.csproj b/Providers/FreeSql.Provider.OracleOledb/FreeSql.Provider.OracleOledb.csproj index b90959036..8b25b6679 100644 --- a/Providers/FreeSql.Provider.OracleOledb/FreeSql.Provider.OracleOledb.csproj +++ b/Providers/FreeSql.Provider.OracleOledb/FreeSql.Provider.OracleOledb.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/Providers/FreeSql.Provider.PostgreSQL/FreeSql.Provider.PostgreSQL.csproj b/Providers/FreeSql.Provider.PostgreSQL/FreeSql.Provider.PostgreSQL.csproj index 834a72d8a..95eecd044 100644 --- a/Providers/FreeSql.Provider.PostgreSQL/FreeSql.Provider.PostgreSQL.csproj +++ b/Providers/FreeSql.Provider.PostgreSQL/FreeSql.Provider.PostgreSQL.csproj @@ -1,7 +1,7 @@ - net8.0;net7.0;net6.0;netstandard2.0;net461;net452;net451;net45 + net9.0;net8.0;net7.0;net6.0;netstandard2.0;net461;net452;net451;net45 true FreeSql;ncc;YeXiangQin FreeSql 数据库实现,基于 PostgreSQL 9.5 @@ -18,7 +18,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md @@ -31,7 +31,7 @@ - + @@ -49,7 +49,7 @@ nts - + net60 diff --git a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLTypesConverter.cs b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLTypesConverter.cs index 16e05bd09..5703740e5 100644 --- a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLTypesConverter.cs +++ b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLTypesConverter.cs @@ -1,11 +1,14 @@ using Newtonsoft.Json.Linq; -using Npgsql; using NpgsqlTypes; using System; using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.Globalization; using System.Linq; using System.Net; using System.Net.NetworkInformation; +using System.Text.RegularExpressions; namespace Newtonsoft.Json { @@ -57,6 +60,98 @@ namespace Newtonsoft.Json return false; } + + private static readonly Regex NpgsqlPointParseRegex = new Regex("\\((-?\\d+.?\\d*),(-?\\d+.?\\d*)\\)"); + static NpgsqlPoint NpgsqlPointParse(string s) + { + Match match = NpgsqlPointParseRegex.Match(s); + if (!match.Success) + throw new FormatException("Not a valid point: " + s); + + return new NpgsqlPoint(double.Parse(match.Groups[1].ToString(), NumberStyles.Any, CultureInfo.InvariantCulture.NumberFormat), double.Parse(match.Groups[2].ToString(), NumberStyles.Any, CultureInfo.InvariantCulture.NumberFormat)); + } + static readonly Regex NpgsqlLineRegex = new Regex(@"\{(-?\d+.?\d*),(-?\d+.?\d*),(-?\d+.?\d*)\}"); + static NpgsqlLine NpgsqlLineParse(string s) + { + var m = NpgsqlLineRegex.Match(s); + if (!m.Success) + throw new FormatException("Not a valid line: " + s); + return new NpgsqlLine( + double.Parse(m.Groups[1].ToString(), NumberStyles.Any, CultureInfo.InvariantCulture.NumberFormat), + double.Parse(m.Groups[2].ToString(), NumberStyles.Any, CultureInfo.InvariantCulture.NumberFormat), + double.Parse(m.Groups[3].ToString(), NumberStyles.Any, CultureInfo.InvariantCulture.NumberFormat) + ); + } + static readonly Regex NpgsqlLSegRegex = new Regex(@"\[\((-?\d+.?\d*),(-?\d+.?\d*)\),\((-?\d+.?\d*),(-?\d+.?\d*)\)\]"); + static NpgsqlLSeg NpgsqlLSegParse(string s) + { + var m = NpgsqlLSegRegex.Match(s); + if (!m.Success) + { + throw new FormatException("Not a valid line: " + s); + } + return new NpgsqlLSeg( + double.Parse(m.Groups[1].ToString(), NumberStyles.Any, CultureInfo.InvariantCulture.NumberFormat), + double.Parse(m.Groups[2].ToString(), NumberStyles.Any, CultureInfo.InvariantCulture.NumberFormat), + double.Parse(m.Groups[3].ToString(), NumberStyles.Any, CultureInfo.InvariantCulture.NumberFormat), + double.Parse(m.Groups[4].ToString(), NumberStyles.Any, CultureInfo.InvariantCulture.NumberFormat) + ); + } + static readonly Regex NpgsqlBoxRegex = new Regex(@"\((-?\d+.?\d*),(-?\d+.?\d*)\),\((-?\d+.?\d*),(-?\d+.?\d*)\)"); + static NpgsqlBox NpgsqlBoxParse(string s) + { + var m = NpgsqlBoxRegex.Match(s); + return new NpgsqlBox( + new NpgsqlPoint(double.Parse(m.Groups[1].ToString(), NumberStyles.Any, CultureInfo.InvariantCulture.NumberFormat), + double.Parse(m.Groups[2].ToString(), NumberStyles.Any, CultureInfo.InvariantCulture.NumberFormat)), + new NpgsqlPoint(double.Parse(m.Groups[3].ToString(), NumberStyles.Any, CultureInfo.InvariantCulture.NumberFormat), + double.Parse(m.Groups[4].ToString(), NumberStyles.Any, CultureInfo.InvariantCulture.NumberFormat)) + ); + } + static NpgsqlPath NpgsqlPathParse(string s) + { + var open = s[0] == '[' ? true : (s[0] == '(' ? false : throw new Exception("Invalid path string: " + s)); + Debug.Assert(s[s.Length - 1] == (open ? ']' : ')')); + var result = new NpgsqlPath(open); + var i = 1; + while (true) + { + var i2 = s.IndexOf(')', i); + result.Add(NpgsqlPointParse(s.Substring(i, i2 - i + 1))); + if (s[i2 + 1] != ',') + break; + i = i2 + 2; + } + return result; + } + static NpgsqlPolygon NpgsqlPolygonParse(string s) + { + var points = new List(); + var i = 1; + while (true) + { + var i2 = s.IndexOf(')', i); + points.Add(NpgsqlPointParse(s.Substring(i, i2 - i + 1))); + if (s[i2 + 1] != ',') + break; + i = i2 + 2; + } + return new NpgsqlPolygon(points); + } + static readonly Regex NpgsqlCircleRegex = new Regex(@"<\((-?\d+.?\d*),(-?\d+.?\d*)\),(\d+.?\d*)>"); + static NpgsqlCircle NpgsqlCircleParse(string s) + { + var m = NpgsqlCircleRegex.Match(s); + if (!m.Success) + throw new FormatException("Not a valid circle: " + s); + + return new NpgsqlCircle( + double.Parse(m.Groups[1].ToString(), NumberStyles.Any, CultureInfo.InvariantCulture.NumberFormat), + double.Parse(m.Groups[2].ToString(), NumberStyles.Any, CultureInfo.InvariantCulture.NumberFormat), + double.Parse(m.Groups[3].ToString(), NumberStyles.Any, CultureInfo.InvariantCulture.NumberFormat) + ); + } + private object YieldJToken(Type ctype, JToken jt, int rank) { if (jt.Type == JTokenType.Null) return null; @@ -65,13 +160,13 @@ namespace Newtonsoft.Json var ctypeGenericType1 = ctype.GenericTypeArguments.FirstOrDefault();//ctype.Namespace == "System" && ctype.Name.StartsWith("Nullable`") ? ctype.GenericTypeArguments.FirstOrDefault() : null; if (ctype == typeof_BitArray) return jt.ToString().ToBitArray(); - if (ctype == typeof_NpgsqlPoint || ctypeGenericType1 == typeof_NpgsqlPoint) return NpgsqlPoint.Parse(jt.ToString()); - if (ctype == typeof_NpgsqlLine || ctypeGenericType1 == typeof_NpgsqlLine) return NpgsqlLine.Parse(jt.ToString()); - if (ctype == typeof_NpgsqlLSeg || ctypeGenericType1 == typeof_NpgsqlLSeg) return NpgsqlLSeg.Parse(jt.ToString()); - if (ctype == typeof_NpgsqlBox || ctypeGenericType1 == typeof_NpgsqlBox) return NpgsqlBox.Parse(jt.ToString()); - if (ctype == typeof_NpgsqlPath || ctypeGenericType1 == typeof_NpgsqlPath) return NpgsqlPath.Parse(jt.ToString()); - if (ctype == typeof_NpgsqlPolygon || ctypeGenericType1 == typeof_NpgsqlPolygon) return NpgsqlPolygon.Parse(jt.ToString()); - if (ctype == typeof_NpgsqlCircle || ctypeGenericType1 == typeof_NpgsqlCircle) return NpgsqlCircle.Parse(jt.ToString()); + if (ctype == typeof_NpgsqlPoint || ctypeGenericType1 == typeof_NpgsqlPoint) return NpgsqlPointParse(jt.ToString()); + if (ctype == typeof_NpgsqlLine || ctypeGenericType1 == typeof_NpgsqlLine) return NpgsqlLineParse(jt.ToString()); + if (ctype == typeof_NpgsqlLSeg || ctypeGenericType1 == typeof_NpgsqlLSeg) return NpgsqlLSegParse(jt.ToString()); + if (ctype == typeof_NpgsqlBox || ctypeGenericType1 == typeof_NpgsqlBox) return NpgsqlBoxParse(jt.ToString()); + if (ctype == typeof_NpgsqlPath || ctypeGenericType1 == typeof_NpgsqlPath) return NpgsqlPathParse(jt.ToString()); + if (ctype == typeof_NpgsqlPolygon || ctypeGenericType1 == typeof_NpgsqlPolygon) return NpgsqlPolygonParse(jt.ToString()); + if (ctype == typeof_NpgsqlCircle || ctypeGenericType1 == typeof_NpgsqlCircle) return NpgsqlCircleParse(jt.ToString()); if (ctype == typeof_Cidr || ctypeGenericType1 == typeof_Cidr) { diff --git a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLTypesExtensions.cs b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLTypesExtensions.cs index d3796ea24..0ca73db0e 100644 --- a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLTypesExtensions.cs +++ b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLTypesExtensions.cs @@ -35,7 +35,7 @@ public static partial class PostgreSQLTypesExtensions double radLng2 = (double)(point.X) * Math.PI / 180d; return 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin((radLat1 - radLat2) / 2), 2) + Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Pow(Math.Sin((radLng1 - radLng2) / 2), 2))) * 6378137; } - + public static NpgsqlRange ToNpgsqlRange(this string that) { var s = that; diff --git a/Providers/FreeSql.Provider.QuestDb/FreeSql.Provider.QuestDb.csproj b/Providers/FreeSql.Provider.QuestDb/FreeSql.Provider.QuestDb.csproj index 3fa8114bb..468264718 100644 --- a/Providers/FreeSql.Provider.QuestDb/FreeSql.Provider.QuestDb.csproj +++ b/Providers/FreeSql.Provider.QuestDb/FreeSql.Provider.QuestDb.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/Providers/FreeSql.Provider.ShenTong/FreeSql.Provider.ShenTong.csproj b/Providers/FreeSql.Provider.ShenTong/FreeSql.Provider.ShenTong.csproj index 4d98e7a0f..cbc25cfa1 100644 --- a/Providers/FreeSql.Provider.ShenTong/FreeSql.Provider.ShenTong.csproj +++ b/Providers/FreeSql.Provider.ShenTong/FreeSql.Provider.ShenTong.csproj @@ -15,7 +15,7 @@ $(AssemblyName) true true - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/Providers/FreeSql.Provider.SqlServer/FreeSql.Provider.SqlServer.csproj b/Providers/FreeSql.Provider.SqlServer/FreeSql.Provider.SqlServer.csproj index 3c4130b6f..af9f909c7 100644 --- a/Providers/FreeSql.Provider.SqlServer/FreeSql.Provider.SqlServer.csproj +++ b/Providers/FreeSql.Provider.SqlServer/FreeSql.Provider.SqlServer.csproj @@ -1,7 +1,7 @@ - net8.0;net7.0;net6.0;netstandard2.0;net451;net45;net40 + net9.0;net8.0;net7.0;net6.0;netstandard2.1;netstandard2.0;net451;net45;net40 true FreeSql;ncc;YeXiangQin FreeSql 数据库实现,基于 SqlServer 2005+,并根据版本适配分页方法:row_number 或 offset fetch next @@ -18,7 +18,7 @@ true false key.snk - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md @@ -30,21 +30,21 @@ - - + + - + microsoft net40 - + net60;microsoft diff --git a/Providers/FreeSql.Provider.SqlServerForSystem/FreeSql.Provider.SqlServerForSystem.csproj b/Providers/FreeSql.Provider.SqlServerForSystem/FreeSql.Provider.SqlServerForSystem.csproj index 731901075..48509e2e6 100644 --- a/Providers/FreeSql.Provider.SqlServerForSystem/FreeSql.Provider.SqlServerForSystem.csproj +++ b/Providers/FreeSql.Provider.SqlServerForSystem/FreeSql.Provider.SqlServerForSystem.csproj @@ -1,7 +1,7 @@ - net8.0;net7.0;net6.0;netstandard2.0;net451;net45;net40 + net9.0;net8.0;net7.0;net6.0;netstandard2.1;netstandard2.0;net451;net45;net40 true FreeSql;ncc;YeXiangQin FreeSql 数据库实现,基于 System.Data.SqlClient + SqlServer 2005+,并根据版本适配分页方法:row_number 或 offset fetch next @@ -18,7 +18,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md @@ -42,7 +42,7 @@ net40 - + net60 diff --git a/Providers/FreeSql.Provider.Sqlite/FreeSql.Provider.Sqlite.csproj b/Providers/FreeSql.Provider.Sqlite/FreeSql.Provider.Sqlite.csproj index bd86071be..14652bdc9 100644 --- a/Providers/FreeSql.Provider.Sqlite/FreeSql.Provider.Sqlite.csproj +++ b/Providers/FreeSql.Provider.Sqlite/FreeSql.Provider.Sqlite.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/Providers/FreeSql.Provider.SqliteCore/FreeSql.Provider.SqliteCore.csproj b/Providers/FreeSql.Provider.SqliteCore/FreeSql.Provider.SqliteCore.csproj index a9f4cd1e6..687e0d59e 100644 --- a/Providers/FreeSql.Provider.SqliteCore/FreeSql.Provider.SqliteCore.csproj +++ b/Providers/FreeSql.Provider.SqliteCore/FreeSql.Provider.SqliteCore.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md diff --git a/Providers/FreeSql.Provider.Xugu/FreeSql.Provider.Xugu.csproj b/Providers/FreeSql.Provider.Xugu/FreeSql.Provider.Xugu.csproj index aafabf6b2..91a23d754 100644 --- a/Providers/FreeSql.Provider.Xugu/FreeSql.Provider.Xugu.csproj +++ b/Providers/FreeSql.Provider.Xugu/FreeSql.Provider.Xugu.csproj @@ -15,7 +15,7 @@ $(AssemblyName) true true - 3.5.100-preview20241113 + 3.5.100-preview20241123 readme.md