我们正在使用Entity Framework 4.4并使用迁移。数据库已经存在,我们需要定期更新它。但是,种子方法没有被调用,因此没有添加查找值。
代码如下:
internal sealed class Configuration : DbMigrationsConfiguration<MyDbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
SetSqlGenerator("System.Data.SqlClient", new OurSqlServerMigrationSqlGenerator());
}
protected override void Seed(KinectionDbContext context)
{
SeedLookupTables(context);
}
private static void SeedLookupTables(KinectionDbContext context)
{
context.Titles.AddOrUpdate(t => t.Value,
new Title {Value = "Mr"},
new Title {Value = "Mrs"},
new Title {Value = "Miss"},
new Title {Value = "Ms"},
new Title {Value = "Dr"}
);
context.SaveChanges();
}
}
public class MyDbContext : ObjectContext
{
public MyDbContext()
{
}
static MyDbContext ()
{
Database.SetInitializer<KinectionDbContext>(null);
}
public DbSet<Title> Titles { get; set; }
}
我们正在打电话:
Add-Migration Seed
但迁移是空的。
有没有人知道为什么种子被调用cmot以及为什么没有检测到查找表中的其他值?
由于 Ñ
答案 0 :(得分:23)
迁移种子方法
只要Update-Database PowerShell命令运行,就会运行 执行
您需要致电Update-Database
而不是Add-Migration
Add-Migration
支持一个迁移文件,其中包含将数据库迁移到新版本的命令。它是空的,因为没有要进行的架构更改。如果你想做的就是播种,你不需要在致电Add-Migration
之前致电Update-Database
参考文献:
Code first Db initialization strategies.
Code first migrations recommended reading
Managed Migrations
Database initializer and Migrations Seed methods