From 33641838460c350fb2a94bc2949d7a0419ef1697 Mon Sep 17 00:00:00 2001 From: Shorty Date: Wed, 28 May 2025 20:04:12 +0100 Subject: [PATCH] EF Core LINQ Query Fails: DateTime.UtcNow - TimeSpan Cannot Be Translated An unhandled exception occurs when running a LINQ query that includes DateTime.UtcNow - TimeSpan as a condition in Where(). EF Core cannot translate this expression into SQL. --- SharedLibraryCore/Services/PenaltyService.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/SharedLibraryCore/Services/PenaltyService.cs b/SharedLibraryCore/Services/PenaltyService.cs index aaef0708..991fdce6 100644 --- a/SharedLibraryCore/Services/PenaltyService.cs +++ b/SharedLibraryCore/Services/PenaltyService.cs @@ -198,10 +198,14 @@ namespace SharedLibraryCore.Services { await using var context = _contextFactory.CreateContext(false); - var recentlyUsedIps = await context.Aliases.Where(alias => alias.LinkId == linkId) + var cutoffDate = DateTime.UtcNow - _appConfig.RecentAliasIpLinkTimeLimit; + + var recentlyUsedIps = await context.Aliases + .Where(alias => alias.LinkId == linkId) .Where(alias => alias.IPAddress != null) - .Where(alias => alias.DateAdded >= DateTime.UtcNow - _appConfig.RecentAliasIpLinkTimeLimit) - .Select(alias => alias.IPAddress).ToListAsync(); + .Where(alias => alias.DateAdded >= cutoffDate) + .Select(alias => alias.IPAddress) + .ToListAsync(); if (!recentlyUsedIps.Any()) {