在我的迁移文件夹中有一个初始创建,旁边还有一个后续迁移文件。当我从包管理器控制台运行Update-Database -ProjectName Data -StartUpProjectName Ui -Script
时,我得到了Sql脚本,如果我实际执行Update-Database
而没有-Script
属性,则执行该脚本。
它生成的Sql包含我期望的所有模式创建和修改,但它不包括我希望根据Seed
方法出现的INSERT
语句。我试过删除数据库,让一切都通过Update-Database
和设置AutomaticMigrationsEnabled = true;
在我的configuration.cs再次创建,但无论如何,我只得到生成的模式,从来没有数据。
我显然改变了一些我不应该做的事情,因为数据一直在播种,但今天下午停止了。有人有什么明显的建议来解释为什么会发生这种情况吗?
为了确认,我在我的configuration.cs文件中有以下方法,该方法与今天早些时候发生播种时没有变化:
protected override void Seed(ContextClassHere context)
{
// Calls to seed methods located here
}
问题解决。我不能解释为什么Seed
方法没有运行,但我学到了很多关于如何使用Data-Migrations
现在这是一个很好的副作用。我已经对我的模型进行了修改,我已经在一个新的迁移文件中手动编写了脚本。事实证明我不需要麻烦,因为有一个工具可以为我做这件事,即Add-Migration
。有了这些知识,我把我的模型回滚到预修改,运行InitialCreate
,它在种子发生时按预期工作,然后运行Add-Migration
方法,它为我创建了新的迁移文件,现在一切都像预期的那样工作,每次都运行Seed
方法。
我不能完全解释为什么Seed
方法没有执行,但现在按照上述过程,一切都如预期的那样工作。