Нет, нет возможности исключить таблицу, потому что, как следует из названия, она удалит всю базу данных.
Однако вы можете наследовать от 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();
}
}
У меня есть что-то подобное, и в конце семени у меня есть context.SaveChanges(); Но где я указывал, чтобы удалить таблицу/db? – Nir
Если вы унаследовали от 'DropCreateDatabaseIfModelChanges', когда модель изменяется, сначала сначала автоматически удаляется БД; воссоздать все таблицы; а затем он вызывает метод «Семя». Дополнительной конфигурации не требуется, кроме того, что вы устанавливаете свой initialzer с помощью 'Database.SetInitializer (новый MyInitializer());' при запуске приложения. – nemesv
Есть ли метод базы данных pre drop? – Nir