我需要能够设置 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/