Initialiseur est exécuté lorsque vous avez besoin d'accéder à la base de données, donc si vous souhaitez créer une base de données au démarrage de l'application, utilisez l'une des options suivantes :
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
CréerDatabaseIfNotExists Une implémentation de IDatabaseInitializer qui recréera et réamorcera éventuellement la base de données avec des données uniquement si la base de données n'existe pas. Pour amorcer la base de données, créez une classe dérivée et remplacez la méthode Seed.
Database.SetInitializer<MyContext>(new CreateDatabaseIfNotExists<MyContext>());
http://msdn.microsoft.com/ fr-fr/library/gg679221(v=vs.103).aspx
DropCreateDatabaseIfModelChanges Une implémentation de IDatabaseInitializer qui supprimera, recréera et éventuellement réamorcera la base de données avec des données uniquement si le modèle a changé depuis la création de la base de données. Ceci est réalisé en écrivant un hachage du modèle de magasin dans la base de données lors de sa création, puis en comparant ce hachage avec celui généré à partir du modèle actuel. Pour amorcer la base de données, créez une classe dérivée et remplacez la méthode Seed.
Database.SetInitializer(new DropCreateDatabaseIfModelChanges());
http://msdn.microsoft.com/ fr-fr/library/gg679604(v=vs.103).aspx
DropCreateDatabaseAlways
Une implémentation de IDatabaseInitializer qui recréera toujours et réamorcera éventuellement la base de données avec des données la première fois qu'un contexte est utilisé dans le domaine d'application. Pour amorcer la base de données, créez une classe dérivée et remplacez la méthode Seed.
Database.SetInitializer<MyContext>(new DropCreateDatabaseAlways<MyContext>());
http://msdn.microsoft.com/ fr-fr/library/gg679506(v=vs.103).aspx
Je vous recommande de regarder Migrations si vous souhaitez suivre, rétablissez les modifications que vous avez apportées à votre base de données à l'état précédent http ://msdn.microsoft.com/hr-hr/data/jj591621 .
MISE À JOUR
context.Database.Initialize(true);
Pour l'application MVC, ajoutez une section au Application_Start()
méthode dans 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);
}
}
Vous pouvez également utiliser un initialiseur personnalisé :
public class MyDbInit : DropCreateDatabaseAlways<MyContext>
{
}
puis utilisez
Database.SetInitializer(new MyDbInit());
MISE À JOUR 2
Créez une nouvelle application MVC4 vide appelée DeleteDBOnEveryRequest .Mettez ce qui suit dans 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);
}
}
Créez un nouveau contrôleur appelé DatabaseController avec deux actions.
Dans Accès action que vous supprimez la base de données et redirigez vers Recréé action à partir de laquelle vous créez une BD telle qu'elle a été précédemment supprimée.
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();
}
}
}
Est-ce ce que vous vouliez ?