Inicjator jest wykonywany, gdy potrzebujesz uzyskać dostęp do bazy danych, więc jeśli chcesz utworzyć bazę danych w aplikacji, użyj dowolnego z poniższych:
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 Implementacja IDatabaseInitializer, która ponownie utworzy i opcjonalnie ponownie zaszczepi bazę danych danymi tylko wtedy, gdy baza danych nie istnieje. Aby zasiać bazę danych, utwórz klasę pochodną i zastąp metodę Seed.
Database.SetInitializer<MyContext>(new CreateDatabaseIfNotExists<MyContext>());
http://msdn.microsoft.com/ en-us/library/gg679221(v=vs.103).aspx
DropCreateDatabaseIfModelChanges Implementacja IDatabaseInitializer, która usunie, ponownie utworzy i opcjonalnie ponownie zaszczepi bazę danych danymi tylko wtedy, gdy model zmienił się od czasu utworzenia bazy danych. Osiąga się to poprzez zapisanie skrótu modelu sklepu do bazy danych podczas jego tworzenia, a następnie porównanie tego skrótu z hashem wygenerowanym z bieżącego modelu. Aby zasiać bazę danych, utwórz klasę pochodną i zastąp metodę Seed.
Database.SetInitializer(nowy DropCreateDatabaseIfModelChanges());
http://msdn.microsoft.com/ en-us/library/gg679604(v=vs.103).aspx
DropCreateDatabaseAlways
Implementacja IDatabaseInitializer, która zawsze będzie odtwarzać i opcjonalnie ponownie wypełniać bazę danych danymi przy pierwszym użyciu kontekstu w domenie aplikacji. Aby zasiać bazę danych, utwórz klasę pochodną i zastąp metodę Seed.
Database.SetInitializer<MyContext>(new DropCreateDatabaseAlways<MyContext>());
http://msdn.microsoft.com/ en-us/library/gg679506(v=vs.103).aspx
Polecam zajrzeć na Migracje jeśli chcesz śledzić, przywróć zmiany wprowadzone w bazie danych do poprzedniego stanu http ://msdn.microsoft.com/hr-hr/data/jj591621 .
AKTUALIZUJ
context.Database.Initialize(true);
W przypadku aplikacji MVC dodaj sekcję do Application_Start()
metoda w 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);
}
}
Możesz również użyć niestandardowego inicjatora:
public class MyDbInit : DropCreateDatabaseAlways<MyContext>
{
}
a następnie użyj
Database.SetInitializer(new MyDbInit());
AKTUALIZACJA 2
Utwórz nową pustą aplikację MVC4 o nazwie DeleteDBOnEveryRequest .Umieść następujące informacje w 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);
}
}
Utwórz nowy kontroler o nazwie DatabaseController z dwoma akcjami.
W Dostępie działanie polegające na usunięciu bazy danych i przekierowaniu do Odtworzonego akcja, z której tworzysz bazę danych, tak jak została ona wcześniej usunięta.
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();
}
}
}
Czy tego chciałeś?