我有一个 MVC4 应用程序,我最近升级到了 Entity Framework 5,我正试图将我们的数据库转移到使用从删除和创建每次运行的开发风格的迁移。
这是我在应用程序启动功能中所做的。
protected void Application_Start()
{
Database.SetInitializer(
new MigrateDatabaseToLatestVersion< MyContext, Configuration >() );
...
}
我在我的存储库项目上运行了该Enable-Migrations
命令,我认为这会创建一个初始迁移文件,但是它创建的唯一文件是Configuration
当我删除数据库时,它首先通过代码按预期创建它,并从配置文件中为数据库播种。在配置文件中,我将所有Add()
功能更改为AddOrUpdate()
但是,Configuration
每次网站启动并一次又一次地复制所有种子数据时,它都会在我的文件中运行种子功能。
我想象它会创建一个initial migration
文件,因为我读过的博客建议它会,我可以把种子数据放在那里,但它没有
谁能解释我应该如何在代码中设置数据库以便它只播种一次?
虽然这对于使用 EF migrate.exe 非常有趣,但我已经切换到使用Roundhouse来运行迁移。我仍然使用 EF 来基于模型构建我的迁移,但我编写了一个小控制台应用程序来将迁移写入 SQL 文件。然后我使用 Roundhouse 通过我的 rake 构建脚本自己执行迁移。涉及的过程要多一些,但它比在应用程序启动时使用 EF 动态执行迁移要稳定得多。