尝试使用.WithDefaultValue()修改字段的类型

时间:2018-01-16 17:28:22

标签: fluent-migrator

我有一个包含默认值列的表:

this.Create.Table("msgqueue")
    .WithColumn("id")
        .AsInt32()
        .Identity()
        .PrimaryKey()
    .WithColumn("queueddt")
        .AsDateTime()
        .Nullable()
        .WithDefaultValue(SystemMethods.CurrentDateTime)
;

我想将其从datetime更改为datetime:

this.Alter.Table("msgqueue")
    .AlterColumn("queueddt")
        .AsCustom("datetime2")
        .Nullable()
        .WithDefaultValue(SystemMethods.CurrentDateTime)
;

这给了我错误:

The error was The object 'DF_msgqueue_queueddt' is dependent on column 'queueddt'.

我做了一些谷歌搜索,并发现了Delete.DefaultConstraint(),所以我尝试了,首先:

this.Delete.DefaultConstraint()
    .OnTable("msgqueue")
    .OnColumn("msgqueue")
;

我仍然看到同样的问题。

1 个答案:

答案 0 :(得分:0)

在Alter Table语句之前尝试使用Execute.Sql删除默认约束:

Execute.Sql(@"ALTER TABLE msgqueue DROP CONSTRAINT DF_msgqueue_queueddt")

此外,您的列名在上一个语句中是错误的。它应该是:

this.Delete.DefaultConstraint()
.OnTable("msgqueue")
.OnColumn("queueddt");