4

私はアイデアがありません。グーグルで検索しましたが、データベース初期化子が起動しない理由がまだわかりません。MyDbContext クラスと MyDbContextInitializer クラスがあります。Application_Start (MVC4 を使用) で、次のようにします。

// Initialize database
Database.SetInitializer(new MyDbContextInitializer());
MyDbContext context = new MyDbContext();
context.Database.Initialize(true);

EF 5 では正常に動作していましたが、EF6 に切り替えると、MyDbContextInitializer クラスの Seed() が呼び出されません。なんで?

MyDbContext:

public class MyDbContext : DbContext
{
    public MyDbContext() : base("Name=MyDbContext")
    {
    }

    public DbSet<User> Users { get; set; }
    public DbSet<Role> Roles { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new UserConfig());
        modelBuilder.Configurations.Add(new RoleConfig());
    }
}

MyDbContextInitializer:

public class MyDbContextInitializer : DropCreateDatabaseAlways<MyDbContext>
{
    protected override void Seed(MyDbContext context)
    {
        var roles = new List<Role>
        {
            new Role {Name = "Administrator"},
            new Role {Name = "User"}
        };

        roles.ForEach(r => context.Roles.Add(r));

        context.SaveChanges();
    }
}

どうしたの?ありがとう。

4

1 に答える 1

0

接続文字列はどのように見えますか? 接続文字列が特定の方法で設定されている場合、EF はデータベースを最初に使用すると見なし、初期化メソッドを起動しません。

于 2013-11-26T14:46:53.867 に答える