我試圖抓住Code First,至今每次我對模型進行更改時,都需要刪除並重新創建數據庫。那麼當前數據庫中的數據呢?我只是覺得很煩人,我必須每次都這樣做,並且不會創建一個好的網絡方法,除非您100%確定不需要進行更改,例如在表中添加新列。是否有另一種方法來防止這種情況發生?EF代碼首先需要對模型進行更改,任何方式不必刪除數據庫?
4
A
回答
1
默認情況下,數據庫初始值設定爲DropCreateDatabaseIfModelChnages。您可以設置數據庫初始化爲空,以避免重現,
Database.SetInitializer<YourContext>(null);
另一種選擇是使用Database Migrations無需重新創建它來更新數據庫。
1
如果您在開發過程中嘗試維護測試數據,請考慮使用IDatabaseInitializer的Seed方法(即您的數據庫初始值設定項)。 Seed方法在itialization期間被調用(在應用了任何模型更改之後),並將填充您指定的任何測試數據。
指定想要使用EF的初始化程序的最佳方法是在global.asax.cs文件中。
下面是一個例子:
[Global.asax.cs中]
Database.SetInitializer<MyApplicationDbContext>(new MyApplicationDbContextInitializer());
[MyApplicationDbContextInitializer.cs]
public class MyApplicationDbContextInitializer : DropCreateDatabaseAlways<MyApplicationDbContext>
{
protected override void Seed(TitleDB context)
{
context.Products.Add(new Product { Id = 1, Name = "Foobar XL" });
context.Products.Add(new Product { Id = 2, Name = "Foobar LG" });
context.Products.Add(new Product { Id = 3, Name = "Foobar MD" });
context.SaveChanges();
base.Seed(context);
}
}
相關問題
- 1. EF 5 - 模型首先,如何更新DB模式,而不刪除數據庫
- 2. EF模型首先:如何以編程方式生成/刪除數據庫?
- 3. 如何更新模型EF代碼第一「從數據庫代碼首先」
- 4. EF代碼優先 - 重建數據庫如果模型更改
- 5. EF 6代碼首先從數據庫模型生成錯誤
- 6. EF 4.2代碼首先存儲過程模型更改錯誤
- 7. 如何刪除從數據庫多個項目進行代碼優先EF 4.1
- 8. EF6代碼當模型更改時,首先刪除表(不是整個數據庫)
- 9. EF 6.1.2數據庫首先查看代
- 10. 用實體框架更新數據庫模式代碼首先
- 11. 模型首先或代碼優先大數據庫
- 12. 如何從EF5.0模型更新數據庫模式首先更改?
- 13. 如何通過EF模型避免數據丟失首先進行數據庫模式升級?
- 14. MVC EF數據庫首先多對多
- 15. 代碼首先在EF不創建數據庫
- 16. EF代碼首先不會創建新的數據庫
- 17. 如何強制EF代碼首先重新創建數據庫?
- 18. 如何首先使用EF代碼重置數據庫遷移?
- 19. 如何在EF代碼中首先需要關係
- 20. EF 4代碼如何首先處理生產環境中的模式更改?
- 21. EF代碼首先排除列
- 22. EF從數據庫更改中重新生成代碼模型
- 23. 插入第一組數據到EF代碼 - 首先使用存儲庫模式。
- 24. 無法刪除數據庫 - EF代碼優先
- 25. LINQ - 首先在EF代碼中對父類進行外連接
- 26. 從EF模型首先到代碼優先
- 27. MVC3/EF - 更改模型...數據庫模式不匹配
- 28. 在EF代碼更新收藏首先
- 29. EF代碼首先創建
- 30. 在EF代碼首先
對不起,在這裏我會加入這一行?另外,如果我將一個新屬性添加到模型中,它會將它添加到數據庫中並將其中的當前數據保留在其中嗎? –
因爲你需要使用數據庫遷移。看我的編輯。 –
好吧,我要讀這篇文章。謝謝。 –