gpt4 book ai didi

c# - EF 7 为 DateTime 列设置初始默认值

转载 作者:太空狗 更新时间:2023-10-29 19:52:22 25 4
gpt4 key购买 nike

我需要能够设置 DateTime 列的初始值。

当我指定“getutcdate() 或 DateTime.UtcNow 时

entity.Property(e => e.ShipDate).DefaultValue("getutcdate()")
entity.Property(e => e.ShipDate).DefaultValue(DateTime.UtcNow)

然后运行 ​​dnx 。 ef migration add InitialMigration EF 生成迁移快照:

b.Property<DateTime?>("ShipDate")
.Required()
.Annotation("Relational:ColumnDefaultValue", "getutcdate()")
.Annotation("Relational:ColumnDefaultValueType", "System.String");

当我使用 DateTime.UtcNow 时...

b.Property<DateTime?>("ShipDate")
.Annotation("Relational:ColumnDefaultValue", "635754129448768827")
.Annotation("Relational:ColumnDefaultValueType", "System.DateTime");

和初始迁移:

ShipDate = table.Column(
type: "datetime2",
nullable: false,
defaultValue: "getutcdate()"),

当我使用 DateTime.UtcNow 时...

ShipDate = table.Column(
type: "datetime2",
nullable: true,
defaultValue: new DateTime(2015, 8, 17, 12, 55, 44, 876, DateTimeKind.Unspecified)),

它似乎必须工作,但是当我将数据插入表中时,该列的默认值是创建时间戳的“即时”。

我错过了什么吗?

同样,如何在 EF7 中指定 IDENTITY SEED?

谢谢

更新生成 sql 脚本后,我得到了两个选项:

如果使用“getutcdate()”:

[ShipDate] datetime2 DEFAULT 'getutcdate()',

因为引号而不起作用

或者如果使用 DateTime.utcNow:

[ShipDate] datetime2 DEFAULT '2015-08-17 12:55:44.8760000'

这解释了我得到的静态值。

我想我可以应付这个。这是错误还是有正确的方法?谢谢

最佳答案

你想设置SQL的默认值,而不是常量值:

entity.Property(e => e.ShipDate).HasDefaultValueSql("getutcdate()");

关于c# - EF 7 为 DateTime 列设置初始默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32049742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com