我希望为当前使用DateTime
属性的一系列对象创建迁移,并将其转换为DateTimeOffset
属性。在本示例中,我将其中的大多数去除了,但是它们是相似的:
public partial class DatetimeOffset : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<Message>(nameof(Message.SendingDate), nameof(Message), nameof(DateTimeOffset));
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<Message>(nameof(Message.SendingDate), nameof(Message), "datetime");
}
}
出于这些目的,只需假设Message
像这样:
public class Message {
public DateTime SendingDate { get; set; }
}
我的升级工作正常,但是降级没有效果,因为它是DateTimeOffset和DateTime之间的有损转换。有什么方法可以投射这个?我不在乎精度损失。
我正在使用.NET Core 2.2和EF Core 2.2。
答案 0 :(得分:0)
我最终使用的是datetime2
列,该列的精度为7位数字,可以很好地进行转换:
public partial class DatetimeOffset : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<Message>(nameof(Message.SendingDate), nameof(Message), nameof(DateTimeOffset));
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<Message>(nameof(Message.SendingDate), nameof(Message), "datetime2(7)");
}
}