将我的项目升级到 .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");
}
感觉像是破解,但确实有效。
我刚刚使用 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");
}
感觉像是破解,但确实有效。