Entity Framework中的种子方法未被调用

12
我们正在使用 Entity Framework 4.4,并使用迁移。 数据库已经存在,我们需要定期更新它。 然而,Seed 方法并未被调用,因此查找值并没有被添加。
代码如下:
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

但是迁移没有任何结果。

有人知道为什么Seed方法没有被调用以及为什么查找表中的附加值没有被检测到吗?

谢谢 N

1个回答

23

迁移种子方法

每当执行Update-Database PowerShell命令时运行

您需要调用Update-Database而不是Add-Migration

Add-Migration脚手架生成一个迁移文件,其中包含将数据库迁移到新版本的命令。 它是空的,因为没有模式更改要进行。 如果您只想进行种子数据填充,那么在调用Update-Database之前无需调用Add-Migration

参考资料:

Code first Db初始化策略。
Code first迁移推荐阅读
Managed Migrations
数据库初始化器和迁移种子方法


谢谢,那个有效 :). 不过,有没有办法获取播种的 SQL 脚本? - Johnny Doeness
更新迁移返回一堆错误,因为在我的种子方法中使用了文件或其他逻辑实现。 - Alexandr Sargsyan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接