You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add translations for NodaTime LocalDate.AtMidnight() and At() #3576
Any methods on LocalDate e.g. AtMidnight() fail in a where clause (but succeed in a select clause).
Full Error
The LINQ expression 'DbSet<TestEntity>()
.Where(t => t.Date.AtMidnight().Hour > 0)' could not be translated. Additional information: Translation of method 'NodaTime.LocalDate.AtMidnight' failed.
Failing test (version 9.0.4)
[Fact]
public void LocalDateTests()
{
const string connString = "Host=localhost;Database=NodaTimeTests;Username=postgres;Password=postgres";
var options = new DbContextOptionsBuilder<TestDbContext>()
.UseNpgsql(connString, b => b.UseNodaTime())
.Options;
using var context = new TestDbContext(options);
context.Database.EnsureCreated();
// Succeeds
_ = context.Set<TestEntity>()
.Select(e => e.Date.AtMidnight().Hour > 0)
.ToList();
// Fails
_ = context.Set<TestEntity>()
.Where(e => e.Date.AtMidnight().Hour > 0)
.ToList();
}
private class TestDbContext(DbContextOptions options) : DbContext(options)
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<TestEntity>();
}
}
public class TestEntity
{
public int Id { get; init; }
public LocalDate Date { get; init; }
}
FYI the list of supported translations for NodaTime types can be found here - not all methods/members can be translated (and some simply haven't done yet because nobody has requested them).
In any case, I've submitted #3577 for LocalDate.AtMidnight() and LocalDate.At().
Activity
[-]LocalDate operations fail in where clause[/-][+]Add translations for NodaTime LocalDate.AtMidnight() and At()[/+]Add translations for NodaTime LocalDate.{At,AtMidnight}
roji commentedon Jul 9, 2025
FYI the list of supported translations for NodaTime types can be found here - not all methods/members can be translated (and some simply haven't done yet because nobody has requested them).
In any case, I've submitted #3577 for LocalDate.AtMidnight() and LocalDate.At().
jeremy-morren commentedon Jul 9, 2025
Thanks for your help.
I noticed the method wasn't in the list - the confusing thing was that it worked in
Selectbut notWhere, so I assumed that it was a bug.Document translations for NodaTime LocalDate.{At,AtMidnight}
Document translations for NodaTime LocalDate.{At,AtMidnight} (#413)
Add translations for NodaTime LocalDate.{At,AtMidnight}