回答

0

不,沒有辦法排除一個表,因爲顧名思義它會刪除整個數據庫。

但是你可以從初始化器繼承和覆蓋種子的方法來重新插入數據:

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();但我在哪裏指定放置table/db? – Nir

+0

如果您在模型更改時從「DropCreateDatabaseIfModelChanges」繼承,則首先會自動刪除數據庫;重新創建所有表格;然後它調用'Seed'方法。沒有額外的配置需要,除了你用'Database.SetInitializer(new MyInitializer());'在應用程序啓動時設置你的initialzer。 – nemesv

+0

是否有預滴數據庫方法? – Nir

0

不是通過刪除整個數據庫(這是那些角色的作用)。我可以想象,你可以創建自己的角色,明確執行DROP查詢除了你想保留的表之外的所有表。