2013-06-25 2 views
4

Я хочу сначала создать базу данных с использованием кода. И моя база данных всегда находится в режиме «DropCreateDatabaseAlways».Первый код: база данных создается только после выполнения определенного кода?

Я заметил, что, если я не пытаюсь выполнить некоторый запрос к базе данных, таких, как

using (var db = new Models.TnHContext()) 
     { 
      var query = from u in db.Users 
         select u; 
      foreach (var u in query) 
      { 
       txt += u.UserID + "<br/>"; 
      } 
     } 

база данных не будет создана. Если я его не выполнил, только я смогу увидеть созданную базу данных. Интересно, связано ли это с конструкцией EntityFramework/поведением по умолчанию?

ответ

0

Вызывается database initializer, когда вы выполняете запрос по контексту, извлекаете ObjectContext из DbContext или звоните the Database.Initialize method.

Поэтому, если вы хотите сразу создать базу данных без выполнения запроса, вы должны использовать:

context.Database.Initialize(false); 
0

Инициализация базы данных запускается ленивой платформой Entity Framework. Это произойдет, только когда EF попытается подключиться к базе данных. Вы можете вручную инициировать инициализацию базы данных, используя следующее.

using (var db = new Models.TnHContext()) 
{ 
    db.Database.Initialize(force: false); 
} 

Установка параметра force в false указывает, что EF не запускает инициализацию, если она уже запущена.