有些字段需要更改为可空。
最初,
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");
}
}
但是有更好的方法,一种在数据迁移中改变列的标准方法吗?