diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml
index a656490c..a7a29088 100644
--- a/FreeSql/FreeSql.xml
+++ b/FreeSql/FreeSql.xml
@@ -1104,93 +1104,6 @@
-
-
- 动态创建实体类型
-
-
-
-
- 配置Class
-
- 类名
- 类标记的特性[Table(Name = "xxx")] [Index(xxxx)]
-
-
-
-
- 获取类型构建器,可作为要构建的Type来引用
-
-
-
-
- 配置属性
-
- 属性名称
- 属性类型
- 属性标记的特性-支持多个
-
-
-
-
- 配置属性
-
- 属性名称
- 属性类型
- 该属性是否重写父类属性
- 属性标记的特性-支持多个
-
-
-
-
- 配置属性
-
- 属性名称
- 属性类型
- 该属性是否重写父类属性
- 属性默认值
- 属性标记的特性-支持多个
-
-
-
-
- 配置父类
-
- 父类类型
-
-
-
-
- Override属性
-
-
-
-
-
- Emit动态创建出Class - Type
-
-
-
-
-
- Emit动态创建出Class - Type,不附带获取TableInfo
-
-
-
-
-
- 首字母小写
-
-
-
-
-
-
- 首字母大写
-
-
-
-
获取实体的主键值,以 "*|_,[,_|*" 分割,当任意一个主键属性无值时,返回 ""
@@ -5913,28 +5826,6 @@
请使用 fsql.InsertDict(dict) 方法插入字典数据
-
-
- 动态构建Class Type
-
-
-
-
-
- 根据字典,创建 table 对应的实体对象
-
-
-
-
-
-
-
- 根据实体对象,创建 table 对应的字典
-
-
-
-
-
C#: that >= between && that <= and
diff --git a/Providers/FreeSql.Provider.MySql/FreeSql.Provider.MySql.csproj b/Providers/FreeSql.Provider.MySql/FreeSql.Provider.MySql.csproj
index 8ec7fc99..03af5033 100644
--- a/Providers/FreeSql.Provider.MySql/FreeSql.Provider.MySql.csproj
+++ b/Providers/FreeSql.Provider.MySql/FreeSql.Provider.MySql.csproj
@@ -1,7 +1,7 @@
- netstandard2.0;net452;net451;net45;net40
+ net8.0;net7.0;net6.0;netstandard2.0;net452;net451;net45;net40
true
FreeSql;ncc;YeXiangQin
FreeSql 数据库实现,基于 MySql 5.6,Ado.Net 驱动是 MySql.Data(Oracle官方)
@@ -27,7 +27,7 @@
-
+
@@ -41,5 +41,8 @@
net40
+
+ net60
+
diff --git a/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs b/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs
index a67ffca9..c55e5439 100644
--- a/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs
+++ b/Providers/FreeSql.Provider.MySql/MySqlAdo/MySqlAdo.cs
@@ -67,6 +67,16 @@ namespace FreeSql.MySql
else if (param is DateTime?)
return AddslashesTypeHandler(typeof(DateTime?), param) ?? string.Concat("'", ((DateTime)param).ToString("yyyy-MM-dd HH:mm:ss.fff"), "'");
+#if net60
+ else if (param is DateOnly || param is DateOnly?)
+ return AddslashesTypeHandler(typeof(DateOnly), param) ?? string.Concat("'", ((DateOnly)param).ToString("yyyy-MM-dd"), "'");
+ else if (param is TimeOnly || param is TimeOnly?)
+ {
+ var ts = (TimeOnly)param;
+ return $"'{ts.Hour}:{ts.Minute}:{ts.Second}.{ts.Millisecond}'";
+ }
+#endif
+
else if (param is TimeSpan || param is TimeSpan?)
{
var ts = (TimeSpan)param;
diff --git a/Providers/FreeSql.Provider.MySql/MySqlCodeFirst.cs b/Providers/FreeSql.Provider.MySql/MySqlCodeFirst.cs
index ca51bfd1..15c32835 100644
--- a/Providers/FreeSql.Provider.MySql/MySqlCodeFirst.cs
+++ b/Providers/FreeSql.Provider.MySql/MySqlCodeFirst.cs
@@ -43,6 +43,11 @@ namespace FreeSql.MySql
{ typeof(TimeSpan).FullName, CsToDb.New(MySqlDbType.Time, "time","time NOT NULL", false, false, 0) },{ typeof(TimeSpan?).FullName, CsToDb.New(MySqlDbType.Time, "time", "time",false, true, null) },
{ typeof(DateTime).FullName, CsToDb.New(MySqlDbType.DateTime, "datetime(3)", "datetime(3) NOT NULL", false, false, new DateTime(1970,1,1)) },{ typeof(DateTime?).FullName, CsToDb.New(MySqlDbType.DateTime, "datetime(3)", "datetime(3)", false, true, null) },
+#if net60
+ { typeof(TimeOnly).FullName, CsToDb.New(MySqlDbType.Time, "time", "time NOT NULL", false, false, 0) },{ typeof(TimeOnly?).FullName, CsToDb.New(MySqlDbType.Time, "time", "time", false, true, null) },
+ { typeof(DateOnly).FullName, CsToDb.New(MySqlDbType.Date, "date", "date NOT NULL", false, false, new DateTime(1970,1,1)) },{ typeof(DateOnly?).FullName, CsToDb.New(MySqlDbType.Date, "date", "date", false, true, null) },
+#endif
+
{ typeof(byte[]).FullName, CsToDb.New(MySqlDbType.VarBinary, "varbinary", "varbinary(255)", false, null, new byte[0]) },
{ typeof(string).FullName, CsToDb.New(MySqlDbType.VarChar, "varchar", "varchar(255)", false, null, "") },
{ typeof(char).FullName, CsToDb.New(MySqlDbType.VarChar, "char", "char(1)", false, null, '\0') },
diff --git a/Providers/FreeSql.Provider.MySqlConnector/FreeSql.Provider.MySqlConnector.csproj b/Providers/FreeSql.Provider.MySqlConnector/FreeSql.Provider.MySqlConnector.csproj
index 7520a589..9ef04d49 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;net6.0;netcoreapp3.1;netstandard2.1;netstandard2.0;net45
+ net8.0;net7.0;net6.0;netcoreapp3.1;netstandard2.1;netstandard2.0;net45
true
FreeSql;ncc;YeXiangQin
FreeSql 数据库实现,基于 MySql 5.6,Ado.Net 驱动是 MySqlConnector
@@ -45,5 +45,8 @@
MySqlConnector
+
+ net60;MySqlConnector
+
diff --git a/Providers/FreeSql.Provider.PostgreSQL/FreeSql.Provider.PostgreSQL.csproj b/Providers/FreeSql.Provider.PostgreSQL/FreeSql.Provider.PostgreSQL.csproj
index 9490dca6..336d1510 100644
--- a/Providers/FreeSql.Provider.PostgreSQL/FreeSql.Provider.PostgreSQL.csproj
+++ b/Providers/FreeSql.Provider.PostgreSQL/FreeSql.Provider.PostgreSQL.csproj
@@ -1,7 +1,7 @@
- netstandard2.0;net461;net452;net451;net45
+ net8.0;net7.0;net6.0;netstandard2.0;net461;net452;net451;net45
true
FreeSql;ncc;YeXiangQin
FreeSql 数据库实现,基于 PostgreSQL 9.5
@@ -31,7 +31,7 @@
-
+
@@ -49,6 +49,9 @@
nts
+
+ net60
+
diff --git a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLAdo.cs b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLAdo.cs
index 9be429d4..2684a848 100644
--- a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLAdo.cs
+++ b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLAdo/PostgreSQLAdo.cs
@@ -67,6 +67,16 @@ namespace FreeSql.PostgreSQL
else if (param is DateTime?)
return AddslashesTypeHandler(typeof(DateTime?), param) ?? string.Concat("'", ((DateTime)param).ToString("yyyy-MM-dd HH:mm:ss.ffffff"), "'");
+#if net60
+ else if (param is DateOnly || param is DateOnly?)
+ return AddslashesTypeHandler(typeof(DateOnly), param) ?? string.Concat("'", ((DateOnly)param).ToString("yyyy-MM-dd"), "'");
+ else if (param is TimeOnly || param is TimeOnly?)
+ {
+ var ts = (TimeOnly)param;
+ return $"'{ts.Hour}:{ts.Minute}:{ts.Second}.{ts.Millisecond}'";
+ }
+#endif
+
else if (param is TimeSpan || param is TimeSpan?)
{
var ts = (TimeSpan)param;
diff --git a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLCodeFirst.cs b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLCodeFirst.cs
index 9bcc4f80..8d619b15 100644
--- a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLCodeFirst.cs
+++ b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLCodeFirst.cs
@@ -46,6 +46,11 @@ namespace FreeSql.PostgreSQL
{ typeof(TimeSpan).FullName, CsToDb.New(NpgsqlDbType.Time, "time","time NOT NULL", false, false, 0) },{ typeof(TimeSpan?).FullName, CsToDb.New(NpgsqlDbType.Time, "time", "time",false, true, null) },
{ typeof(DateTime).FullName, CsToDb.New(NpgsqlDbType.Timestamp, "timestamp", "timestamp NOT NULL", false, false, new DateTime(1970,1,1)) },{ typeof(DateTime?).FullName, CsToDb.New(NpgsqlDbType.Timestamp, "timestamp", "timestamp", false, true, null) },
+#if net60
+ { typeof(TimeOnly).FullName, CsToDb.New(NpgsqlDbType.Time, "time", "time NOT NULL", false, false, 0) },{ typeof(TimeOnly?).FullName, CsToDb.New(NpgsqlDbType.Time, "time", "time", false, true, null) },
+ { typeof(DateOnly).FullName, CsToDb.New(NpgsqlDbType.Date, "date", "date NOT NULL", false, false, new DateTime(1970,1,1)) },{ typeof(DateOnly?).FullName, CsToDb.New(NpgsqlDbType.Date, "date", "date", false, true, null) },
+#endif
+
{ typeof(bool).FullName, CsToDb.New(NpgsqlDbType.Boolean, "bool","bool NOT NULL", null, false, false) },{ typeof(bool?).FullName, CsToDb.New(NpgsqlDbType.Boolean, "bool","bool", null, true, null) },
{ typeof(Byte[]).FullName, CsToDb.New(NpgsqlDbType.Bytea, "bytea", "bytea", false, null, new byte[0]) },
{ typeof(BitArray).FullName, CsToDb.New(NpgsqlDbType.Varbit, "varbit", "varbit(64)", false, null, new BitArray(new byte[64])) },
diff --git a/Providers/FreeSql.Provider.SqlServer/SqlServerAdo/SqlServerAdo.cs b/Providers/FreeSql.Provider.SqlServer/SqlServerAdo/SqlServerAdo.cs
index be848d44..18223157 100644
--- a/Providers/FreeSql.Provider.SqlServer/SqlServerAdo/SqlServerAdo.cs
+++ b/Providers/FreeSql.Provider.SqlServer/SqlServerAdo/SqlServerAdo.cs
@@ -96,7 +96,10 @@ namespace FreeSql.SqlServer
return string.Concat("'", ((DateOnly)param).ToString("yyyy-MM-dd"), "'");
}
else if (param is TimeOnly || param is TimeOnly?)
- return ((TimeOnly)param).ToTimeSpan().TotalSeconds;
+ {
+ var ts = (TimeOnly)param;
+ return $"'{ts.Hour}:{ts.Minute}:{ts.Second}.{ts.Millisecond}'";
+ }
#endif
else if (param is TimeSpan || param is TimeSpan?)
{
diff --git a/Providers/FreeSql.Provider.SqlServer/SqlServerCodeFirst.cs b/Providers/FreeSql.Provider.SqlServer/SqlServerCodeFirst.cs
index 2077c4f5..f84743b9 100644
--- a/Providers/FreeSql.Provider.SqlServer/SqlServerCodeFirst.cs
+++ b/Providers/FreeSql.Provider.SqlServer/SqlServerCodeFirst.cs
@@ -38,6 +38,7 @@ namespace FreeSql.SqlServer
{ typeof(DateTime).FullName, CsToDb.New(SqlDbType.DateTime, "datetime", "datetime NOT NULL", false, false, new DateTime(1970,1,1)) },{ typeof(DateTime?).FullName, CsToDb.New(SqlDbType.DateTime, "datetime", "datetime", false, true, null) },
{ typeof(DateTimeOffset).FullName, CsToDb.New(SqlDbType.DateTimeOffset, "datetimeoffset", "datetimeoffset NOT NULL", false, false, new DateTimeOffset(new DateTime(1970,1,1), TimeSpan.Zero)) },{ typeof(DateTimeOffset?).FullName, CsToDb.New(SqlDbType.DateTimeOffset, "datetimeoffset", "datetimeoffset", false, true, null) },
#if net60
+ { typeof(TimeOnly).FullName, CsToDb.New(SqlDbType.Time, "time", "time NOT NULL", false, false, 0) },{ typeof(TimeOnly?).FullName, CsToDb.New(SqlDbType.Time, "time", "time", false, true, null) },
{ typeof(DateOnly).FullName, CsToDb.New(SqlDbType.Date, "date", "date NOT NULL", false, false, new DateTime(1970,1,1)) },{ typeof(DateOnly?).FullName, CsToDb.New(SqlDbType.Date, "date", "date", false, true, null) },
#endif