如何在Entity Framework数据迁移中将必填字段更改为可选/可空?

时间:2016-04-28 17:37:58

标签: c# entity-framework

有些字段需要更改为可空。

最初,

public Guid EmployeeId { get; set; }

在FluentAPI中,

Property(x => x.EmployeeId)
    .IsRequired()
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

已更改为

public Guid? EmployeeId { get; set; }

在FluentApi中,

Property(x => x.EmployeeId)
    .IsOptional()
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

但是当程序包管理器控制台中的Add-Migration时,不会添加更改代码:

public partial class EmployeeIdIsOptional : DbMigration
{
    public override void Up()
    {
    }

    public override void Down()
    {
    }
}

这是否意味着EF无法自动执行此类迁移?

我能想到的一个临时搭建是在Up()Down()方法中编写Sql语句,如:

public partial class EmployeeIdIsOptional : DbMigration
{
    public override void Up()
    {
        Sql("ALTER TABLE Salaries ALTER COLUMN EmployeeId uniqueidentifier NULL");
    }

    public override void Down()
    {
        Sql("ALTER TABLE Salaries ALTER COLUMN EmployeeId uniqueidentifier");
    }
}

但是有更好的方法,一种在数据迁移中改变列的标准方法吗?

0 个答案:

没有答案