我已经设置了一个简单的迁移AutomaticMigrationsEnabled = false
。在 Visual Studio 或使用MigrateDatabaseToLatestVersion
.
但是,这对我来说并不理想。我想从我的 ci 服务器上的部署脚本运行迁移。我发现这篇文章解释了如何使用 migrate.exe 执行此操作,但这似乎总是运行种子。即使没有要应用的迁移也是如此。
我是否需要在 Seed 方法中以编程方式检查是否已运行任何迁移?我该怎么做呢?
我已经设置了一个简单的迁移AutomaticMigrationsEnabled = false
。在 Visual Studio 或使用MigrateDatabaseToLatestVersion
.
但是,这对我来说并不理想。我想从我的 ci 服务器上的部署脚本运行迁移。我发现这篇文章解释了如何使用 migrate.exe 执行此操作,但这似乎总是运行种子。即使没有要应用的迁移也是如此。
我是否需要在 Seed 方法中以编程方式检查是否已运行任何迁移?我该怎么做呢?
仅当存在未决迁移时,才使用DbMigrator手动运行 Update()。它是在 Entity Framework 5.0 中引入的。
private void MigrateAndSeedDbIfSchemaIsOutdated()
{
// Disable initializer.
Database.SetInitializer<MyContext>(null);
// Make sure database exists.
using (var db = new MyContext())
{
db.Database.Initialize(false);
}
var migrator = new DbMigrator(new MyConfiguration());
if (migrator.GetPendingMigrations().Any())
{
// Run migrations and seed.
migrator.Update();
}
}