我正在使用代码优先迁移,并且在尝试自动化数据库部署时尝试解决问题。
我有一个类似
的模型public abstract class MyModel
{
// ...
public bool MyBooleanColumn { get; set; }
}
我希望SQL Server中生成的列为BIT NOT NULL
。
因为我认为手动编写的一些旧迁移(例如2013030378749_SomeOldMigrations.cs
)是错误的,所以当我通过BIT NULL
命令从头开始生成新数据库时,此列最终为Update-Database
我正在尝试追溯修复它。所以我写了一个新的迁移2018031519731_RetroactivelyFixThings.cs
并在其中放了
public override void Up()
{
AlterColumn("dbo.MyModel", "MyBooleanColumn", c => c.Boolean(nullable: false));
}
但在应用之后我得到"Unable to update database to match the current model ..."
例外。我验证是否对列进行了更改,而我的模型没有更改。那么这里发生了什么?