实体框架种子方法未被调用

时间:2013-11-27 14:48:28

标签: database entity-framework asp.net-mvc-4 c#-4.0 code-first

我们正在使用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以及为什么没有检测到查找表中的其他值?

由于 Ñ

1 个答案:

答案 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