diff --git a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastBuilder.cs index 89c46e37c..c61a65921 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/FastBuilder.cs @@ -10,6 +10,7 @@ namespace SqlSugar public class FastBuilder { public virtual bool IsActionUpdateColumns { get; set; } + public virtual DbFastestProperties DbFastestProperties { get; set; } public SqlSugarProvider Context { get; set; } public virtual string CharacterSet { get; set; } public virtual string UpdateSql { get; set; } = @"UPDATE TM diff --git a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Private.cs b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Private.cs index 710dde5b2..0938406e1 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Private.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Private.cs @@ -42,6 +42,7 @@ namespace SqlSugar } private DataTable ToDdateTable(List datas) { + var builder = GetBuider(); DataTable tempDataTable = ReflectionInoCore.GetInstance().GetOrCreate("BulkCopyAsync" + typeof(T).FullName, () => { @@ -87,7 +88,14 @@ namespace SqlSugar } else if (column.UnderType == UtilConstants.DateTimeOffsetType&& value!=null && value != DBNull.Value) { - value = UtilMethods.ConvertFromDateTimeOffset((DateTimeOffset)value); + if (builder.DbFastestProperties != null && builder.DbFastestProperties.HasOffsetTime == true) + { + //Don't need to deal with + } + else + { + value = UtilMethods.ConvertFromDateTimeOffset((DateTimeOffset)value); + } } dr[name] = value; } diff --git a/Src/Asp.Net/SqlSugar/Entities/DbFastestProperties.cs b/Src/Asp.Net/SqlSugar/Entities/DbFastestProperties.cs new file mode 100644 index 000000000..23848dfdf --- /dev/null +++ b/Src/Asp.Net/SqlSugar/Entities/DbFastestProperties.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SqlSugar +{ + public class DbFastestProperties + { + public bool HasOffsetTime { get; set; } + } +} diff --git a/Src/Asp.Net/SqlSugar/Interface/IFastBuilder.cs b/Src/Asp.Net/SqlSugar/Interface/IFastBuilder.cs index 3a68de8a2..8a5db2035 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IFastBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IFastBuilder.cs @@ -10,6 +10,7 @@ namespace SqlSugar public interface IFastBuilder { bool IsActionUpdateColumns { get; set; } + DbFastestProperties DbFastestProperties { get; set; } SqlSugarProvider Context { get; set; } string CharacterSet { get; set; } Task UpdateByTempAsync(string tableName,string tempName,string [] updateColumns,string[] whereColumns); diff --git a/Src/Asp.Net/SqlSugar/OnlyNet/OracleFastBuilder.cs b/Src/Asp.Net/SqlSugar/OnlyNet/OracleFastBuilder.cs index da5da74fa..61b40cd52 100644 --- a/Src/Asp.Net/SqlSugar/OnlyNet/OracleFastBuilder.cs +++ b/Src/Asp.Net/SqlSugar/OnlyNet/OracleFastBuilder.cs @@ -17,6 +17,7 @@ namespace SqlSugar public SqlSugarProvider Context { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } public bool IsActionUpdateColumns { get; set; } + public DbFastestProperties DbFastestProperties { get; set; } = new DbFastestProperties(); public void CloseDb() { diff --git a/Src/Asp.Net/SqlSugar/Realization/SqlServer/DbBind/SqlServerDbBind.cs b/Src/Asp.Net/SqlSugar/Realization/SqlServer/DbBind/SqlServerDbBind.cs index 60716cf94..54a63c067 100644 --- a/Src/Asp.Net/SqlSugar/Realization/SqlServer/DbBind/SqlServerDbBind.cs +++ b/Src/Asp.Net/SqlSugar/Realization/SqlServer/DbBind/SqlServerDbBind.cs @@ -6,6 +6,17 @@ namespace SqlSugar { public class SqlServerDbBind : DbBindProvider { + public override string GetDbTypeName(string csharpTypeName) + { + if (csharpTypeName == nameof(DateTimeOffset)) + { + return nameof(DateTimeOffset); + } + else + { + return base.GetDbTypeName(csharpTypeName); + } + } public override List> MappingTypes { get diff --git a/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerFastBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerFastBuilder.cs index 01db7ac50..a8dcae24a 100644 --- a/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerFastBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerFastBuilder.cs @@ -12,6 +12,9 @@ namespace SqlSugar public class SqlServerFastBuilder:FastBuilder,IFastBuilder { public override bool IsActionUpdateColumns { get; set; } = true; + public override DbFastestProperties DbFastestProperties { get; set; } = new DbFastestProperties() { + HasOffsetTime=true + }; public async Task ExecuteBulkCopyAsync(DataTable dt) { diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteFastBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteFastBuilder.cs index 2e6908fa7..b3997556e 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteFastBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteFastBuilder.cs @@ -15,6 +15,7 @@ namespace SqlSugar public string CharacterSet { get; set; } private DataTable UpdateDataTable { get; set; } public bool IsActionUpdateColumns { get; set; } + public DbFastestProperties DbFastestProperties { get; set; } = new DbFastestProperties(); public SqliteFastBuilder(EntityInfo entityInfo) { this.entityInfo = entityInfo; diff --git a/Src/Asp.Net/SqlSugar/SqlSugar.csproj b/Src/Asp.Net/SqlSugar/SqlSugar.csproj index 2bf08be3e..4d4880292 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugar.csproj +++ b/Src/Asp.Net/SqlSugar/SqlSugar.csproj @@ -103,6 +103,7 @@ +