Initiering exekveras när du behöver komma åt databasen, så om du vill skapa en databas på appen börja använda något av följande:
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
CreateDatabaseIfNotExists En implementering av IDatabaseInitializer som kommer att återskapa och valfritt återföda databasen med data endast om databasen inte finns. För att seed databasen, skapa en härledd klass och åsidosätt Seed-metoden.
Database.SetInitializer<MyContext>(new CreateDatabaseIfNotExists<MyContext>());
http://msdn.microsoft.com/ sv-se/library/gg679221(v=vs.103).aspx
DropCreateDatabaseIfModelChanges En implementering av IDatabaseInitializer som kommer att ta bort, återskapa och eventuellt återinsätta databasen med data endast om modellen har ändrats sedan databasen skapades. Detta uppnås genom att skriva en hash av butiksmodellen till databasen när den skapas och sedan jämföra denna hash med en som genereras från den aktuella modellen. För att seed databasen, skapa en härledd klass och åsidosätt Seed-metoden.
Database.SetInitializer(nya DropCreateDatabaseIfModelChanges());
http://msdn.microsoft.com/ sv-se/library/gg679604(v=vs.103).aspx
DropCreateDatabaseAlways
En implementering av IDatabaseInitializer som alltid kommer att återskapa och eventuellt återinsätta databasen med data första gången som en kontext används i applikationsdomänen. För att seed databasen, skapa en härledd klass och åsidosätt Seed-metoden.
Database.SetInitializer<MyContext>(new DropCreateDatabaseAlways<MyContext>());
http://msdn.microsoft.com/ sv-se/library/gg679506(v=vs.103).aspx
Jag rekommenderar att du tittar på Migreringar om du vill spåra, återställ ändringarna du gjorde i din DB till det tidigare tillståndet http ://msdn.microsoft.com/hr-hr/data/jj591621 .
UPPDATERA
context.Database.Initialize(true);
För MVC-applikationer lägg till en sektion i Application_Start()
metoden i 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);
}
}
Du kan också använda en anpassad initialiserare :
public class MyDbInit : DropCreateDatabaseAlways<MyContext>
{
}
och använd sedan
Database.SetInitializer(new MyDbInit());
UPPDATERING 2
Skapa en ny tom MVC4-applikation som heter DeleteDBOnEveryRequest .Sätt in följande i 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);
}
}
Skapa en ny kontroller som heter DatabaseController med två åtgärder.
I Åtkomst åtgärd du tar bort DB och omdirigerar till Återskapad åtgärd där du skapar en DB som den tidigare raderades.
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();
}
}
}
Var det detta du ville ha?