将我的项目升级到 .net 6 现在我在 EF Core 中使用 postgreSQL 时区

Upgraded my project to .net 6 now I have time zone in EF Core with postgreSQL

我刚刚使用 EFCore 和 NPGSQL (Postgres) 将我的网站 api 升级到了 .net6。 我必须为我的代码设置一个开关才能工作: AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);

现在 EFCore 将我的 DateTime 字段创建为 'timestamp with time zone',这打破了一切。

如何获取日期时间类型的旧 'timestamp without time zone'

我应该删除 LegacyTimestamp 开关吗?

感谢您的帮助!

我通过强制所有 DateTime 和 DateTime 的列类型来修复它?通过在我的 DBContext 的 OnModelCreating 中添加以下代码来“不带时区的时间戳”。

foreach (var property in builder.Model.GetEntityTypes()
                 .SelectMany(t => t.GetProperties())
                 .Where
                 ( p
                   => p.ClrType == typeof(DateTime) 
                      || p.ClrType == typeof(DateTime?)
                 )
        )
{
  property.SetColumnType("timestamp without time zone");
}

感觉像是破解,但确实有效。