カスタムデータベースイニシャライザでSeedメソッドを呼び出す際に問題が発生しました。これらの2つのクラスがMVCアプリから別のクラスライブラリに存在するDropCreateDatabaseAlwaysシードが呼び出されない
public static class MyDatabase
{
public static void Initialize()
{
Database.SetInitializer(new MyInitializer());
}
}
public class MyInitializer : DropCreateDatabaseAlways<MyContext>
{
protected override void Seed(MyContext context)
{
base.Seed(context);
context.Roles.Add(new Role
{
ID = 1,
Name = "User",
});
context.Roles.Add(new Role
{
ID = 2,
Name = "Admin",
});
context.SaveChanges();
}
}
:私は、EF 5.0を使用して、次のコードを持っています。 Global.asax
では、私はInitialize()
メソッドを呼び出します。
MyDatabase.Initialize();
データベースはそれだけでSeed(MyContext context)
メソッドが呼び出されていないですし、データは私のデータベースに入れていない取得し、うまく作成されます。
好奇心を持たずに、メソッドの最後にbase.Seedを置くとどうなりますか? – IronMan84
同じこと、それは呼ばれません。私はcontext.Roles.Addにブレークポイントを置き、決して壊れません。初期化子がWebプロジェクト自体ではなく、別のクラスライブラリにあることと何か関係がありますか?私はこれまでこれをやったことがあると思ったが、特に覚えていない。 –
できます。すべてを静的なクラスに入れている可能性もあります。 – IronMan84