From 8dc59daf3b268b4e167124c2a0b8db5602e3eb20 Mon Sep 17 00:00:00 2001 From: sunkaixuna <610262374@qq.com> Date: Sat, 4 Sep 2021 18:30:15 +0800 Subject: [PATCH] PgSql support timespan --- Src/Asp.Net/PgSqlTest/UnitTest/UCodeFirst.cs | 14 +++++++++++++- Src/Asp.Net/SqlServerTest/UnitTest/UCodeFirst.cs | 13 +++++++++++++ .../ExpressionsToSql/Common/SugarParameter.cs | 3 +-- .../PostgreSQL/DbBind/PostgreSQLDbBind.cs | 2 +- .../Realization/SqlServer/SqlServerProvider.cs | 6 ++++++ 5 files changed, 34 insertions(+), 4 deletions(-) diff --git a/Src/Asp.Net/PgSqlTest/UnitTest/UCodeFirst.cs b/Src/Asp.Net/PgSqlTest/UnitTest/UCodeFirst.cs index 6540aecca..24ad3bb95 100644 --- a/Src/Asp.Net/PgSqlTest/UnitTest/UCodeFirst.cs +++ b/Src/Asp.Net/PgSqlTest/UnitTest/UCodeFirst.cs @@ -18,8 +18,20 @@ namespace OrmTest Db.DbMaintenance.TruncateTable(); Db.CodeFirst.InitTables(); Db.Insertable(new UnitCodeTest22() { id=1}).ExecuteCommand(); + Db.CodeFirst.InitTables(); + Db.Insertable(new UnitTimeSpan2() + { + Id=new TimeSpan(), + id2=new TimeSpan(11,2,1) + }).ExecuteCommand(); + var x= Db.Queryable().ToList(); + } + public class UnitTimeSpan2 + { + [SqlSugar.SugarColumn(ColumnDataType ="time")] + public TimeSpan Id { get; set; } + public TimeSpan id2 { get; set; } } - public class UnitCodeTest22 { [SqlSugar.SugarColumn(IsNullable =true)] public decimal? id { get; set; } diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/UCodeFirst.cs b/Src/Asp.Net/SqlServerTest/UnitTest/UCodeFirst.cs index 7c7887246..56f4d32af 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/UCodeFirst.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/UCodeFirst.cs @@ -24,6 +24,19 @@ namespace OrmTest Db.CodeFirst.InitTables(); Db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); + Db.CodeFirst.InitTables(); + Db.Insertable(new UnitTimeSpan2() + { + Id = new TimeSpan(), + id2 = new TimeSpan(11, 2, 1) + }).ExecuteCommand(); + var x = Db.Queryable().ToList(); + } + public class UnitTimeSpan2 + { + [SqlSugar.SugarColumn(ColumnDataType = "time")] + public TimeSpan Id { get; set; } + public TimeSpan id2 { get; set; } } public class UnitTest0122132 { diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/SugarParameter.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/SugarParameter.cs index f654da37e..3a32f4994 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/SugarParameter.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/SugarParameter.cs @@ -126,8 +126,7 @@ namespace SqlSugar } else if (type == UtilConstants.TimeSpanType) { - if (this.Value != null) - this.Value = this.Value.ToString(); + this.DbType = System.Data.DbType.Time; } else if (type!=null&&type.IsEnum()) { diff --git a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/DbBind/PostgreSQLDbBind.cs b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/DbBind/PostgreSQLDbBind.cs index 76f67d0ed..e03f4f0ce 100644 --- a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/DbBind/PostgreSQLDbBind.cs +++ b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/DbBind/PostgreSQLDbBind.cs @@ -115,7 +115,7 @@ namespace SqlSugar new KeyValuePair("bit",CSharpDataType.byteArray), new KeyValuePair("bit varying",CSharpDataType.byteArray), new KeyValuePair("varbit",CSharpDataType.@byte), - + new KeyValuePair("time",CSharpDataType.TimeSpan), }; public override List StringThrow { diff --git a/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlServerProvider.cs b/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlServerProvider.cs index 3e3a801bc..c02c5c2c3 100644 --- a/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlServerProvider.cs +++ b/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlServerProvider.cs @@ -130,6 +130,12 @@ namespace SqlSugar sqlParameter.Size = parameter.Size; sqlParameter.Value = parameter.Value; sqlParameter.DbType = parameter.DbType; + var isTime = parameter.DbType == System.Data.DbType.Time; + if (isTime) + { + sqlParameter.SqlDbType = SqlDbType.Time; + sqlParameter.Value=DateTime.Parse(parameter.Value?.ToString()).TimeOfDay; + } if (sqlParameter.Value!=null&& sqlParameter.Value != DBNull.Value && sqlParameter.DbType == System.Data.DbType.DateTime) { var date = Convert.ToDateTime(sqlParameter.Value);