ответ

0

Нет, нет возможности исключить таблицу, потому что, как следует из названия, она удалит всю базу данных.

Однако вы можете наследовать от intializer и переопределить метод семян, чтобы снова вставить свои данные:

public class MyInitializer : DropCreateDatabaseIfModelChanges<MyContext> 
{ 
    protected override void Seed(MyContext context) 
    { 
     //insert data to tables through context 
    } 
} 

Если вы хотите что-то более сложным вам нужно реализовать IDatabaseInitializer<TContext> непосредственно, что-то вроде:

public class MyComplexInitializer : IDatabaseInitializer<MyContext> 
{ 
    public void InitializeDatabase(MyContext context) 
    { 
     if (context.Database.Exists()) 
     { 
      if (context.Database.CompatibleWithModel(true)) 
       return; 
      //do something bofore delete 
      context.Database.Delete(); 
     } 
     context.Database.Create(); 
     //add some data to context 
     context.SaveChanges();     
    } 
} 
+0

У меня есть что-то подобное, и в конце семени у меня есть context.SaveChanges(); Но где я указывал, чтобы удалить таблицу/db? – Nir

+0

Если вы унаследовали от 'DropCreateDatabaseIfModelChanges', когда модель изменяется, сначала сначала автоматически удаляется БД; воссоздать все таблицы; а затем он вызывает метод «Семя». Дополнительной конфигурации не требуется, кроме того, что вы устанавливаете свой initialzer с помощью 'Database.SetInitializer (новый MyInitializer());' при запуске приложения. – nemesv

+0

Есть ли метод базы данных pre drop? – Nir

0

Не отбрасывая всю базу данных (это то, что выполняют эти роли). Я могу себе представить, что вы можете создать свою собственную роль, которая явно выполняет запросы DROP для всех таблиц, кроме тех, которые вы хотели бы сохранить.