私はアイデアがありません。グーグルで検索しましたが、データベース初期化子が起動しない理由がまだわかりません。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();
}
}
どうしたの?ありがとう。