让我们说我生成的代码第一次迁移,如下所示:
CreateTable(
"dbo.Genders",
c => new
{
ID = c.Int(nullable: false),
Name = c.String(nullable: false),
})
.PrimaryKey(t => t.ID);
CreateTable(
"dbo.Ratings",
c => new
{
Value = c.Int(nullable: false),
})
.PrimaryKey(t => t.Value);
AddColumn("dbo.Reviews", "RatingValue", c => c.Int());
AddColumn("dbo.AspNetUsers", "GenderID", c => c.Int());
CreateIndex("dbo.AspNetUsers", "GenderID");
CreateIndex("dbo.Reviews", "RatingValue");
AddForeignKey("dbo.AspNetUsers", "GenderID", "dbo.Genders", "ID");
AddForeignKey("dbo.Reviews", "RatingValue", "dbo.Ratings", "Value");
我创建了2个表,并将其他表中的外键添加到这些新表中。简单的东西。现在,让我们说在使用Add-Migration
生成此迁移后,我删除了添加外键的代码来获取此内容:
CreateTable(
"dbo.Genders",
c => new
{
ID = c.Int(nullable: false),
Name = c.String(nullable: false),
})
.PrimaryKey(t => t.ID);
CreateTable(
"dbo.Ratings",
c => new
{
Value = c.Int(nullable: false),
})
.PrimaryKey(t => t.Value);
当我通过Update-Database
运行时,它工作正常,但后来我注意到迁移历史记录保留了原始生成的脚本而不是我编辑的脚本。我可以通过再次执行Add-Migration
并确认生成的迁移是空的来确认这一点。
这是为什么?我错了吗?如果我做了一堆模型更改怎么办,但是我想将迁移分解成单独的块?我怎么能这样做?