Inicializador é executado quando você precisa acessar o banco de dados, portanto, se você deseja criar um banco de dados no início do aplicativo, use qualquer um dos seguintes:
context.Database.Initialize(true); //If set to true the initializer is run even if it has already been run.
context.Database.Create()
http://msdn.microsoft.com/en-us/library/system.data.entity.database.initialize(v=vs.103).aspx
Criar banco de dadosIfNotExists Uma implementação de IDatabaseInitializer que recriará e, opcionalmente, propagará novamente o banco de dados com dados somente se o banco de dados não existir. Para propagar o banco de dados, crie uma classe derivada e substitua o método Seed.
Database.SetInitializer<MyContext>(new CreateDatabaseIfNotExists<MyContext>());
http://msdn.microsoft.com/ pt-br/library/gg679221(v=vs.103).aspx
DropCreateDatabaseIfModelChanges Uma implementação de IDatabaseInitializer que excluirá, recriará e, opcionalmente, propagará novamente o banco de dados com dados somente se o modelo tiver sido alterado desde que o banco de dados foi criado. Isso é obtido gravando um hash do modelo de armazenamento no banco de dados quando ele é criado e, em seguida, comparando esse hash com um gerado a partir do modelo atual. Para propagar o banco de dados, crie uma classe derivada e substitua o método Seed.
Database.SetInitializer(new DropCreateDatabaseIfModelChanges());
http://msdn.microsoft.com/ pt-br/library/gg679604(v=vs.103).aspx
DropCreateDatabaseAlways
Uma implementação de IDatabaseInitializer que sempre recriará e, opcionalmente, propagará novamente o banco de dados com dados na primeira vez que um contexto for usado no domínio do aplicativo. Para propagar o banco de dados, crie uma classe derivada e substitua o método Seed.
Database.SetInitializer<MyContext>(new DropCreateDatabaseAlways<MyContext>());
http://msdn.microsoft.com/ pt-br/library/gg679506(v=vs.103).aspx
Eu recomendo que você veja Migrações se você quiser rastrear, reverta as alterações feitas em seu banco de dados para o estado anterior http ://msdn.microsoft.com/hr-hr/data/jj591621 .
ATUALIZAÇÃO
context.Database.Initialize(true);
Para aplicativos MVC, adicione uma seção ao
Application_Start()
método no Global.asax protected void Application_Start() {
Database.SetInitializer<MyContext>(new DropCreateDatabaseAlways<MyContext>());
// Forces initialization of database on model changes.
using (var context= new MyContext()) {
context.Database.Initialize(force: true);
}
}
Além disso, você pode usar um inicializador personalizado:
public class MyDbInit : DropCreateDatabaseAlways<MyContext>
{
}
e depois usar
Database.SetInitializer(new MyDbInit());
ATUALIZAÇÃO 2
Crie um novo aplicativo MVC4 vazio chamado DeleteDBOnEveryRequest .Coloque o seguinte em Global.asax Application_start
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
Database.SetInitializer<BlogContext>(new DropCreateDatabaseAlways<BlogContext>());
using (var context = new BlogContext())
{
context.Database.Initialize(force: true);
}
}
Crie um novo controlador chamado DatabaseController com duas ações.
No Acesso ação você exclui o banco de dados e redireciona para Recriado ação de onde você cria um banco de dados como foi excluído anteriormente.
namespace DeleteDBOnEveryRequest.Controllers
{
public class DatabaseController : Controller
{
public ActionResult Access()
{
using (var context = new BlogContext())
{
context.Database.Delete();
}
return RedirectToAction("Recreated");
}
public ActionResult Recreated()
{
using (var context = new BlogContext())
{
context.Database.Initialize(force: true);
}
return View();
}
}
}
É isto o que você queria?