diff --git a/src/ClaudeDo.Data/ClaudeDoDbContext.cs b/src/ClaudeDo.Data/ClaudeDoDbContext.cs index a79dda4..bafa60e 100644 --- a/src/ClaudeDo.Data/ClaudeDoDbContext.cs +++ b/src/ClaudeDo.Data/ClaudeDoDbContext.cs @@ -3,6 +3,7 @@ using ClaudeDo.Data.Seeding; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace ClaudeDo.Data; @@ -19,9 +20,24 @@ public class ClaudeDoDbContext : DbContext public DbSet AppSettings => Set(); public DbSet PrimeSchedules => Set(); + private static readonly ValueConverter UtcConverter = + new(v => v, v => DateTime.SpecifyKind(v, DateTimeKind.Utc)); + + private static readonly ValueConverter UtcNullableConverter = + new(v => v, v => v.HasValue ? DateTime.SpecifyKind(v.Value, DateTimeKind.Utc) : null); + protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.ApplyConfigurationsFromAssembly(typeof(ClaudeDoDbContext).Assembly); + + foreach (var entityType in modelBuilder.Model.GetEntityTypes()) + foreach (var property in entityType.GetProperties()) + { + if (property.ClrType == typeof(DateTime) && property.GetValueConverter() == null) + property.SetValueConverter(UtcConverter); + else if (property.ClrType == typeof(DateTime?) && property.GetValueConverter() == null) + property.SetValueConverter(UtcNullableConverter); + } } ///