所以我用這個角色:EF CodeFirst:除了一臺DropCreateDatabaseIfModelChanges
DropCreateDatabaseIfModelChanges
但那裏有一個表,我以維護其數據.. 那麼,有沒有辦法排除一個表或保存一個表數據?
所以我用這個角色:EF CodeFirst:除了一臺DropCreateDatabaseIfModelChanges
DropCreateDatabaseIfModelChanges
但那裏有一個表,我以維護其數據.. 那麼,有沒有辦法排除一個表或保存一個表數據?
不,沒有辦法排除一個表,因爲顧名思義它會刪除整個數據庫。
但是你可以從初始化器繼承和覆蓋種子的方法來重新插入數據:
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();
}
}
不是通過刪除整個數據庫(這是那些角色的作用)。我可以想象,你可以創建自己的角色,明確執行DROP查詢除了你想保留的表之外的所有表。
我有類似的東西,並在種子結束我有context.SaveChanges();但我在哪裏指定放置table/db? – Nir
如果您在模型更改時從「DropCreateDatabaseIfModelChanges」繼承,則首先會自動刪除數據庫;重新創建所有表格;然後它調用'Seed'方法。沒有額外的配置需要,除了你用'Database.SetInitializer(new MyInitializer());'在應用程序啓動時設置你的initialzer。 – nemesv
是否有預滴數據庫方法? – Nir