我知道我们无法手动更新DbMigration方法中的代码,因为这会导致我们在下一个DbMigration步骤中出现不一致的状态。
因此,例如,如果我在下面的DBMigration步骤的代码中将nullable: false
更改为nullable: true
(同时在实体类中执行相同的修改),这肯定会带来问题。正确的方法是在实体类中应用修改 ,并在Package Manager Console
(Add-Migration
)中添加新 DBMigration步骤。
public partial class AddDisabledOnUser : DbMigration
{
public override void Up()
{
AddColumn("dbo.Users", "Disabledc => c.Boolean(nullable: false));
}
public override void Down()
{
DropColumn("dbo.Users", "Disabled");
}
}
但是使用如下SQL命令的DBMigration步骤呢?
public partial class UpdateSomeUsers : DbMigration
{
public override void Up()
{
Sql("UPDATE Users SET Remark = 'Blah blah' WHERE UserName like 'ABC'");
}
public override void Down()
{
}
}
我可以在不影响DBMigration步骤的情况下修改SQL命令中的sql代码吗?
我可以在现有的DBMigration步骤中添加更多sql命令,而不会影响DBMigration步骤吗?
您是否确认我只能做不修改实体模型的事情?
感谢。
答案 0 :(得分:1)
更改已应用于数据库的迁移不会产生任何影响,因此我假设您希望在针对数据库运行迁移之前更改迁移。如果是这种情况,那么您的问题不是真正的问题:
手动修改迁移文件的唯一问题是,如果必须重新创建迁移,则必须注意不要忘记再次添加手动更改。为了避免这种情况,我所做的是自定义迁移SQL生成,以便我可以在映射文件中指定自定义SQL代码。