diff --git a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Private.cs b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Private.cs index 2cca8a3e5..385895e86 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Private.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/FastestProvider/Private.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Data; using System.Linq; +using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; @@ -99,7 +100,16 @@ namespace SqlSugar name = column.PropertyName; } var value = ValueConverter(column, PropertyCallAdapterProvider.GetInstance(column.PropertyName).InvokeGet(item)); - if (isMySql && column.UnderType == UtilConstants.BoolType) + if (column.SqlParameterDbType != null&& column.SqlParameterDbType is Type && UtilMethods.HasInterface((Type)column.SqlParameterDbType, typeof(ISugarDataConverter))) + { + var columnInfo = column; + var type = columnInfo.SqlParameterDbType as Type; + var ParameterConverter = type.GetMethod("ParameterConverter").MakeGenericMethod(columnInfo.PropertyInfo.PropertyType); + var obj = Activator.CreateInstance(type); + var p = ParameterConverter.Invoke(obj, new object[] { value, 100 }) as SugarParameter; + value = p.Value; + } + else if (isMySql && column.UnderType == UtilConstants.BoolType) { if (value.ObjToBool() == false&& uInt64TypeName.Any(z=>z.EqualCase(column.DbColumnName))) @@ -126,6 +136,14 @@ namespace SqlSugar value = UtilMethods.ConvertFromDateTimeOffset((DateTimeOffset)value); } } + else if (value != null && column.UnderType?.FullName == "System.TimeOnly") + { + value = UtilMethods.TimeOnlyToTimeSpan(value); + } + else if (value != null && column.UnderType?.FullName == "System.DateOnly") + { + value = UtilMethods.DateOnlyToDateTime(value); + } dr[name] = value; } dt.Rows.Add(dr); diff --git a/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs b/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs index cca93290a..e2da569de 100644 --- a/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs +++ b/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs @@ -18,6 +18,15 @@ namespace SqlSugar { public class UtilMethods { + public static bool HasInterface(Type targetType, Type interfaceType) + { + if (targetType == null || interfaceType == null || !interfaceType.IsInterface) + { + return false; + } + + return interfaceType.IsAssignableFrom(targetType); + } public static void ClearPublicProperties(T obj,EntityInfo entity) { if (obj == null)