From a2a4d5c20c9d23399d37987d9fcaa2f515096799 Mon Sep 17 00:00:00 2001 From: Christopher Jolly Date: Sun, 11 Aug 2024 04:28:47 +0800 Subject: [PATCH] For returning TimeSpan and TimeOnly we don't want to convert the Jet default datetime to the c# 0 --- src/EFCore.Jet.Data/JetDataReader.cs | 29 +++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/EFCore.Jet.Data/JetDataReader.cs b/src/EFCore.Jet.Data/JetDataReader.cs index 2befa47..9a4d777 100644 --- a/src/EFCore.Jet.Data/JetDataReader.cs +++ b/src/EFCore.Jet.Data/JetDataReader.cs @@ -197,17 +197,32 @@ namespace EntityFrameworkCore.Jet.Data public TimeOnly GetTimeOnly(int ordinal) { - var value = GetDateTime(ordinal); - return TimeOnly.FromDateTime(value); + var value = _wrappedDataReader.GetValue(ordinal); + + if (JetConfiguration.UseDefaultValueOnDBNullConversionError && + Convert.IsDBNull(value)) + return default; + + if (value is DateTime dateTime) + { + return TimeOnly.FromDateTime(dateTime); + } + return (TimeOnly)value; } public virtual TimeSpan GetTimeSpan(int ordinal) { - var dateTime = GetDateTime(ordinal); - return JetConfiguration.UseDefaultValueOnDBNullConversionError && - dateTime == default - ? default - : dateTime - JetConfiguration.TimeSpanOffset; + var value = _wrappedDataReader.GetValue(ordinal); + + if (JetConfiguration.UseDefaultValueOnDBNullConversionError && + Convert.IsDBNull(value)) + return default; + + if (value is DateTime dateTime) + { + return TimeSpan.FromTicks(dateTime.Ticks - JetConfiguration.TimeSpanOffset.Ticks); + } + return (TimeSpan)value; } public virtual DateTimeOffset GetDateTimeOffset(int ordinal)