Initializer udføres, når du har brug for at få adgang til databasen, så hvis du vil oprette en database på app, skal du begynde at bruge noget af følgende:
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 af IDatabaseInitializer, der kun vil genskabe og valgfrit gense databasen med data, hvis databasen ikke eksisterer. For at seed databasen skal du oprette en afledt klasse og tilsidesætte Seed-metoden.
Database.SetInitializer<MyContext>(new CreateDatabaseIfNotExists<MyContext>());
http://msdn.microsoft.com/ en-us/library/gg679221(v=vs.103).aspx
DropCreateDatabaseIfModelChanges En implementering af IDatabaseInitializer, der kun vil slette, genskabe og eventuelt gense databasen med data, hvis modellen er ændret, siden databasen blev oprettet. Dette opnås ved at skrive en hash af butiksmodellen til databasen, når den oprettes, og derefter sammenligne denne hash med en genereret fra den aktuelle model. For at seed databasen skal du oprette en afledt klasse og tilsidesætte Seed-metoden.
Database.SetInitializer(ny DropCreateDatabaseIfModelChanges());
http://msdn.microsoft.com/ en-us/library/gg679604(v=vs.103).aspx
DropCreateDatabaseAlways
En implementering af IDatabaseInitializer, der altid vil genskabe og eventuelt gense databasen med data første gang, en kontekst bruges i applikationsdomænet. For at seed databasen skal du oprette en afledt klasse og tilsidesætte Seed-metoden.
Database.SetInitializer<MyContext>(new DropCreateDatabaseAlways<MyContext>());
http://msdn.microsoft.com/ en-us/library/gg679506(v=vs.103).aspx
Jeg anbefaler, at du ser på Migreringer hvis du vil spore, skal du gendanne de ændringer, du har foretaget i din DB til den tidligere tilstand http ://msdn.microsoft.com/hr-hr/data/jj591621 .
OPDATERING
context.Database.Initialize(true);
For MVC-applikationer tilføj en sektion til Application_Start()
metode 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 også bruge en brugerdefineret initialisering :
public class MyDbInit : DropCreateDatabaseAlways<MyContext>
{
}
og brug derefter
Database.SetInitializer(new MyDbInit());
OPDATERING 2
Lav en ny tom MVC4-applikation kaldet DeleteDBOnEveryRequest .Sæt følgende 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);
}
}
Lav en ny controller kaldet DatabaseController med to handlinger.
I Adgang handling du sletter DB'en og omdirigerer til Genoprettet handling, hvorfra du opretter en DB, som den tidligere blev slettet.
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();
}
}
}
Er det det, du ønskede?