如何说日期时间 - EF Core 6.0 中没有时区的时间戳
How to say Datetime - timestamp without time zone in EF Core 6.0
我将一个 ASP.NET 核心项目从 3.1 迁移到 6.0。
我已经复制旧迁移并将其粘贴到我们的新版本
在 EF Core 3.1(旧)上迁移
migrationBuilder.AddColumn<DateTime>(
name: "CalendarStartDate",
table: "DealOverview",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
EF Core 6.0 中的迁移(新)
migrationBuilder.AlterColumn<DateTime>(
name: "StartDate",
table: "DealOverview",
type: "timestamp without time zone",
nullable: false,
oldClrType: typeof(DateTime),
oldType: "timestamp with time zone");
迁移失败,因为这一行
public DateTime StartDate { get; set; }
已经改变。
我想要这个包裹:
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="3.1.4" />
到这个包裹:
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="6.0.1" />
EF Core 6 Npgsql 引入了一些 breaking changes 时间戳处理逻辑。您可以尝试通过将下一行添加到 Startup
或 Program
文件来“恢复”到旧行为:
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
但通常建议迁移到新行为。
我将一个 ASP.NET 核心项目从 3.1 迁移到 6.0。
我已经复制旧迁移并将其粘贴到我们的新版本
在 EF Core 3.1(旧)上迁移
migrationBuilder.AddColumn<DateTime>(
name: "CalendarStartDate",
table: "DealOverview",
nullable: false,
defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
EF Core 6.0 中的迁移(新)
migrationBuilder.AlterColumn<DateTime>(
name: "StartDate",
table: "DealOverview",
type: "timestamp without time zone",
nullable: false,
oldClrType: typeof(DateTime),
oldType: "timestamp with time zone");
迁移失败,因为这一行
public DateTime StartDate { get; set; }
已经改变。
我想要这个包裹:
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="3.1.4" />
到这个包裹:
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="6.0.1" />
EF Core 6 Npgsql 引入了一些 breaking changes 时间戳处理逻辑。您可以尝试通过将下一行添加到 Startup
或 Program
文件来“恢复”到旧行为:
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
但通常建议迁移到新行为。