删除 'DF_ETable_EDate__######' 对象以将 DateTime 转换为 DateTime2

Dropping 'DF_ETable_EDate__######' Object to Convert DateTime To DateTime2

我有一个现有的 SQL 服务器数据库,其中包含通过 EF 更新数据库迁移创建的表。我有几个模型如下所示:

[Table("ETable")]
public class ETable
{
    [Key]
    public int Id { get; set; }

    // Other properties go here

    public DateTime EDate { get; set; }
}

后来我决定在全局范围内使用 DateTime2,但了解到我必须删除像 'DF_ETable_EDate__######' 这样自动创建的约束对象,以消除类似于 this post 的错误正在尝试更新数据库。

问题是,删除这些约束对象有什么影响吗?如果保留它们有好处,我该如何将它们添加回来?

正如其他人评论的那样,您主要处理 DateTime 字段的默认约束。

取决于您的业务规则,如果不需要,您可以安全地删除约束。否则,您可以将其设置为默认值:

To set a default to an arbitrary date:
AlterColumn("dbo.ETable", "EDate", c => c.DateTime(nullable: false, defaultValueSql: "CONVERT(datetime, '2019-01-01')"));

To set default to current date:
AlterColumn("dbo.ETable", "EDate", c => c.DateTime(nullable: false, defaultValueSql: "GETDATE()"));