Inicializador se ejecuta cuando necesita acceder a la base de datos, por lo que si desea crear una base de datos en el inicio de la aplicación, use algo de lo siguiente:
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
Crear base de datos si no existe Una implementación de IDatabaseInitializer que recreará y, opcionalmente, reinicializará la base de datos con datos solo si la base de datos no existe. Para sembrar la base de datos, cree una clase derivada y anule el método Seed.
Database.SetInitializer<MyContext>(new CreateDatabaseIfNotExists<MyContext>());
http://msdn.microsoft.com/ es-es/library/gg679221(v=vs.103).aspx
DropCreateDatabaseIfModelChanges Una implementación de IDatabaseInitializer que eliminará, recreará y, opcionalmente, volverá a inicializar la base de datos con datos solo si el modelo ha cambiado desde que se creó la base de datos. Esto se logra escribiendo un hash del modelo de tienda en la base de datos cuando se crea y luego comparando ese hash con uno generado a partir del modelo actual. Para sembrar la base de datos, cree una clase derivada y anule el método Seed.
Base de datos.SetInitializer(nuevo DropCreateDatabaseIfModelChanges());
http://msdn.microsoft.com/ es-es/library/gg679604(v=vs.103).aspx
DropCreateDatabaseAlways
Una implementación de IDatabaseInitializer que siempre recreará y, opcionalmente, reinicializará la base de datos con datos la primera vez que se use un contexto en el dominio de la aplicación. Para sembrar la base de datos, cree una clase derivada y anule el método Seed.
Database.SetInitializer<MyContext>(new DropCreateDatabaseAlways<MyContext>());
http://msdn.microsoft.com/ es-es/library/gg679506(v=vs.103).aspx
Te recomiendo que mires Migraciones si desea realizar un seguimiento, revierta los cambios que realizó en su base de datos al estado anterior http ://msdn.microsoft.com/hr-hr/data/jj591621 .
ACTUALIZAR
context.Database.Initialize(true);
Para la aplicación MVC, agregue una sección a Application_Start()
método en 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);
}
}
También puede usar un inicializador personalizado:
public class MyDbInit : DropCreateDatabaseAlways<MyContext>
{
}
y luego usar
Database.SetInitializer(new MyDbInit());
ACTUALIZACIÓN 2
Cree una nueva aplicación MVC4 vacía llamada DeleteDBOnEveryRequest .Ponga lo siguiente en 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);
}
}
Cree un nuevo controlador llamado DatabaseController con dos acciones.
En el Acceso acción, elimina la base de datos y la redirige a Recreado acción desde donde crea una base de datos ya que se eliminó previamente.
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();
}
}
}
¿Es esto lo que querías?