Vergleichen Sie Nodatime-Perioden im EF-Kern
Posted: 12 Feb 2025, 13:17
Ich erstelle eine Anwendung mit .NET (8), EF Core (8) und Postgres (16). Ich benutze Nodatime für jede Datum oder jede Uhrzeitbezogene Aufgabe und nodatime.period s werden in PG als Intervall gespeichert. Code> Konfigurationen. < /p>
EF ist so konfiguriert: < /p>
So weit so gut ... jetzt möchte ich Datensätze abrufen, wobei (e => e.Period
übersetzt werden, da dieser Aufruf auf Datenbankebene relativ einfach ist) Ich frage mich, ob es eine Lösung gibt, um dies mit Linq zu abfragen.
ctx.Entities.FromRawSql("SELECT * FROM ""Entities"" where ""Period"" > interval '8 hours'").ToListAsync();
< /code>
funktioniert auch nicht, während die Abfrage die erwarteten Ergebnisse zurückgibt, wenn sie direkt ausgeführt werden - irgendwelche Ideen, wie man dies vorzugsweise ohne rohe SQL löst? < /p>
Eins mehr Ding ... Ich habe dieses GitHub-Coment gefunden, in dem zwei verschiedene Konfigurationen bezüglich der Nodatime für EF und NPGSQL erwähnt werden. Muss ich meine DB-Context-Konfiguration aktualisieren, um dieses Problem zu lösen?
EF ist so konfiguriert: < /p>
Code: Select all
services.AddDbContext(opt => opt.UseNpgsql(conn, npgOpt => { npgOpt.UseNodaTime() }));
So weit so gut ... jetzt möchte ich Datensätze abrufen, wobei (e => e.Period
übersetzt werden, da dieser Aufruf auf Datenbankebene relativ einfach ist
Code: Select all
SELECT * FROM "Entity" where "Period" > interval '8 hours'
ctx.Entities.FromRawSql("SELECT * FROM ""Entities"" where ""Period"" > interval '8 hours'").ToListAsync();
< /code>
funktioniert auch nicht, während die Abfrage die erwarteten Ergebnisse zurückgibt, wenn sie direkt ausgeführt werden - irgendwelche Ideen, wie man dies vorzugsweise ohne rohe SQL löst? < /p>
Eins mehr Ding ... Ich habe dieses GitHub-Coment gefunden, in dem zwei verschiedene Konfigurationen bezüglich der Nodatime für EF und NPGSQL erwähnt werden. Muss ich meine DB-Context-Konfiguration aktualisieren, um dieses Problem zu lösen?