这是一种奇怪的行为。我试图使用其中一个数据库初始化程序以及代码优先迁移。
我正在使用DropCreateDatabaseAlways和我的"迁移代码"永远不会被称为。即使使用MigrateDatabaseToLatestVersion也不会被调用。
我启用了迁移和一个用于测试的自定义索引(我更改了迁移文件并手动为一个表添加了索引创建)。
当我使用"更新数据库"从包管理器控制台它可以正常工作。创建数据库并将索引添加到表中。
当我使用任何DBInitializer,或者让EF创建数据库(默认)时,它会创建没有索引的数据库....
有什么想法吗?
布鲁诺
答案 0 :(得分:0)
你有EnableAutomaticMigrations = True吗?这似乎阻止了初始迁移的创建,然后EF不运行迁移,它需要某种捷径来创建数据库。
如果您想在代码中运行迁移,可以这样做......
//create a migrator and migrate your database
var connectionInfo =
new System.Data.Entity.Infrastructure
.DbConnectionInfo(connectionString, "System.Data.SqlClient");
//new up your auto-created Migrations Configuration class
var config = new Context.Migrations.Configuration();
config.TargetDatabase = connectionInfo;
//new up a Migrator
var migrator = new System.Data.Entity.Migrations
.DbMigrator(config);
var pendingMigrations = migrator.GetPendingMigrations();
if (pendingMigrations.Any())
{
migrator.Update();
var ctx2 = new CloudMinderDataContext(connectionString);
//YourSeedMethodHere(ctx2);
}