Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Entity Framework Database.SetInitializer po prostu nie działa

Baza danych zostanie utworzona tylko wtedy, gdy faktycznie użyjesz kontekstu.

Jeśli zastąpiłeś metodę Seed w inicjatorze w następujący sposób:

protected override void Seed(MyContext context){...}

Kod źródłowy zostanie uruchomiony tylko wtedy, gdy użyjesz instancji MyContext.

Dlatego działa, gdy używasz

var ctx = new MyContext();
ctx.Database.Initialize(true);

Zawsze możesz zmusić go do utworzenia, używając swojego kontekstu w metodzie Application_Start() w Global.asax.cs, takich jak:

        System.Data.Entity.Database.SetInitializer(new MyInitializer());

        MyContext db = new MyContext();
        db.Database.Initialize(true);
        //or even something like db.Users.Count();

Lub zostanie utworzony później, gdy użyjesz swojego kontekstu. Mogło wyglądać tak, jakby przestało działać, ponieważ usunąłeś kod, który używałby kontekstu podczas uruchamiania aplikacji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Odbuduj i zreorganizuj indeks SQL Server

  2. Jak uzyskać OBJECT_NAME() z innej bazy danych w SQL Server

  3. Dostęp do kolumn tabeli według indeksu zamiast nazwy w procedurze składowanej SQL Server

  4. Jak utworzyć tabelę Temp za pomocą SELECT * INTO tempTable FROM CTE Query

  5. Nie można załadować SqlServerSpatial.dll