From ed71313451b903cad1af68b1c4b440f15d000cca Mon Sep 17 00:00:00 2001 From: Steven Rasmussen Date: Sat, 12 Aug 2023 14:55:35 -0600 Subject: [PATCH] Fixes #35 --- README.md | 3 +++ .../LocalDateTimeQueryTests.cs | 12 ++++++++++++ .../OffsetDateTimeQueryTests.cs | 12 ++++++++++++ .../BaseNodaTimeMemberTranslator.cs | 5 +++++ ...are.EntityFrameworkCore.SqlServer.NodaTime.csproj | 2 +- 5 files changed, 33 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 696d240..988df2f 100644 --- a/README.md +++ b/README.md @@ -213,6 +213,9 @@ await this.Db.RaceResult ``` ## Version History +* 7.1.0 (August 12, 2023) + * Added support for `LocalDateTime.Date` property - [#35](/../../issues/35) + * Added support for `OffsetDateTime.Date` property * 7.0.0 (November 9, 2022) * Initial release supporting EF Core 7.0.0 * 7.0.0-rc.1.22426.7 (September 25, 2022) diff --git a/src/SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime.Tests/LocalDateTimeQueryTests.cs b/src/SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime.Tests/LocalDateTimeQueryTests.cs index 9079d89..db34033 100644 --- a/src/SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime.Tests/LocalDateTimeQueryTests.cs +++ b/src/SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime.Tests/LocalDateTimeQueryTests.cs @@ -156,6 +156,18 @@ public async Task LocalDateTime_PlusNanoseconds() Assert.Equal(6, raceResults.Count); } + [Fact] + public async Task LocalDateTime_Date() + { + var raceResults = await this.Db.Race.Where(r => r.ScheduledStart.Date >= new LocalDate(2019, 7, 1)).ToListAsync(); + + Assert.Equal( + condense(@$"{RaceSelectStatement} WHERE CAST([r].[ScheduledStart] AS date) >= '2019-07-01'"), + condense(this.Db.Sql)); + + Assert.Equal(6, raceResults.Count); + } + [Fact] public async Task LocalDateTime_DatePart_Year() { diff --git a/src/SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime.Tests/OffsetDateTimeQueryTests.cs b/src/SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime.Tests/OffsetDateTimeQueryTests.cs index 1f2c12c..1426540 100644 --- a/src/SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime.Tests/OffsetDateTimeQueryTests.cs +++ b/src/SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime.Tests/OffsetDateTimeQueryTests.cs @@ -109,6 +109,18 @@ public async Task OffsetDateTime_PlusMilliseconds() Assert.Single(raceResults); } + [Fact] + public async Task OffsetDateTime_Date() + { + var raceResults = await this.Db.RaceResult.Where(r => r.StartTimeOffset.Date >= new LocalDate(2019, 7, 1)).ToListAsync(); + + Assert.Equal( + condense(@$"{RaceResultSelectStatement} WHERE CAST([r].[StartTimeOffset] AS date) >= '2019-07-01'"), + condense(this.Db.Sql)); + + Assert.Equal(6, raceResults.Count); + } + [Fact] public async Task OffsetDateTime_DatePart_Year() { diff --git a/src/SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime/Query/ExpressionTranslators/BaseNodaTimeMemberTranslator.cs b/src/SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime/Query/ExpressionTranslators/BaseNodaTimeMemberTranslator.cs index 5e73dae..16c225f 100644 --- a/src/SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime/Query/ExpressionTranslators/BaseNodaTimeMemberTranslator.cs +++ b/src/SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime/Query/ExpressionTranslators/BaseNodaTimeMemberTranslator.cs @@ -2,6 +2,7 @@ using Microsoft.EntityFrameworkCore.Diagnostics; using Microsoft.EntityFrameworkCore.Query; using Microsoft.EntityFrameworkCore.Query.SqlExpressions; +using NodaTime; using System; using System.Collections.Generic; using System.Reflection; @@ -37,6 +38,10 @@ public SqlExpression Translate(SqlExpression instance, MemberInfo member, Type r null, returnType); } + else if (member.Name == nameof(LocalDateTime.Date) && returnType == typeof(LocalDate)) + { + return _sqlExpressionFactory.Convert(instance, typeof(LocalDate)); + } } return null; diff --git a/src/SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime/SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime.csproj b/src/SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime/SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime.csproj index cc5aa19..fce1021 100644 --- a/src/SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime/SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime.csproj +++ b/src/SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime/SimplerSoftware.EntityFrameworkCore.SqlServer.NodaTime.csproj @@ -13,7 +13,7 @@ https://github.com/StevenRasmussen/EFCore.SqlServer.NodaTime git Entity Framework Core;entity-framework-core;EF;Data;O/RM;EntityFrameworkCore;EFCore;Noda;NodaTime;Noda Time - 7.0.0.0 + 7.1.0.0