这里我使用EF6迁移了CodeFirst
public override void Up()
{
CreateTable(
"dbo.MyTable",
c => new
{
Id = c.Int(nullable: false, identity: true),
Date = c.DateTime(nullable: false, defaultValueSql: "GETUTCDATE()"),
})
.PrimaryKey(t => t.Id);
}
但我们发现Date
无法在插入时自定义。因此,我们需要迁移才能删除defaultValueSql
列上的Date
参数。
我尝试使用AlterColumn
而没有defaultValueSql
参数
public override void Up()
{
AlterColumn("dbo.MyTable", "Date", c => c.DateTime(nullable: false));
}
public override void Down()
{
AlterColumn("dbo.MyTable", "Date", c => c.DateTime(nullable: false, defaultValueSql: "GETUTCDATE()"));
}
它既不用于插入和更新Date
,也不用于表的定义。
CREATE TABLE [dbo].[MyTable] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Date] DATETIME DEFAULT (getutcdate()) NOT NULL,
);
有人遇到过这种情况吗?
答案 0 :(得分:2)
实际上,在数据库中,为Constraint
创建了defaultValueSql
,我认为此参数适用于 sys 表,而不是{{1} },这导致我的MyTable
无效。
最后,我为我的目的创建了一些原始SQL命令,如下所示:
AlterColumn
分享希望这对其他人有帮助。
答案 1 :(得分:1)
分两个阶段尝试:
public override void Up()
{
AlterColumn("dbo.MyTable", "Date", c => c.DateTime(nullable: true,
defaultValue: "NULL"));
AlterColumn("dbo.MyTable", "Date", c => c.DateTime(nullable: false));
}