【发布时间】:2021-02-18 17:30:21
【问题描述】:
我需要能够设置 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'
这解释了我得到的静态值。
我想我可以做到这一点。 这是一个错误还是有正确的方法? 谢谢
【问题讨论】:
-
你的模型(OnModelCreating)方法中有什么?
-
我只是想用相同的信息更新问题。
entity.Property(e => e.ShipDate).DefaultValue("getutcdate()"); -
我也试过 entity.Property(e => e.ShipDate).DefaultValue(DateTime.UtcNow);
-
您尝试过:entity.Property(e => e.ShipDate).DefaultValueSql("getutcdate()") 或使用 getdate() iso getutcdate() 吗?