From 923b6b325b4ccc8a8b4d37fe801fea07800a4a51 Mon Sep 17 00:00:00 2001 From: alireza Date: Sat, 10 Oct 2026 00:51:59 +0330 Subject: [PATCH] fix(postgres): map DateTime to timestamp without time zone (Npgsql rejects Kind=Unspecified on timestamptz) --- .../Data/GreenHomeDbContext.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/GreenHome.Infrastructure/Data/GreenHomeDbContext.cs b/src/GreenHome.Infrastructure/Data/GreenHomeDbContext.cs index 577dfe6..6be7ed8 100644 --- a/src/GreenHome.Infrastructure/Data/GreenHomeDbContext.cs +++ b/src/GreenHome.Infrastructure/Data/GreenHomeDbContext.cs @@ -38,6 +38,21 @@ public sealed class GreenHomeDbContext : DbContext { base.OnModelCreating(modelBuilder); + // Postgres: map DateTime -> "timestamp without time zone" (not timestamptz). + // Mirrors SQL Server's naive datetime2 — accepts any DateTime.Kind, so values + // copied from SQL Server (Kind=Unspecified) or written by the API won't crash. + if (Database.ProviderName == "Npgsql.EntityFrameworkCore.PostgreSQL") + { + foreach (var et in modelBuilder.Model.GetEntityTypes()) + { + foreach (var p in et.GetProperties()) + { + if (p.ClrType == typeof(DateTime) || p.ClrType == typeof(DateTime?)) + p.SetColumnType("timestamp"); + } + } + } + modelBuilder.Entity(b => { b.ToTable("Devices");