2011-08-13 93 views
1

有沒有一種方法,當我添加一個新的實體到我的代碼優先配置表會自動添加,所以我不必擔心用新表更新我的數據庫?EF4代碼首先創建新表

回答

2

您可以添加

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<YourDbContext>()); 

在你讀應用程序啓動。如果您修改了配置,它將爲您重新創建數據庫。 如果您不想刪除並創建數據庫(要增量開發),則可以使用SqlMigrationshttp://www.hanselman.com/blog/EntityFrameworkCodeFirstMigrationsAlphaNuGetPackageOfTheWeek10.aspx

+0

有趣的聯繫,謝謝。 – Jeroen

+0

有什麼我可以做的,以避免失去我已經添加的數據? –

+0

@jonny_d你可以使用EF遷移 –

0

來源:http://blogs.msdn.com/b/adonet/archive/2010/12/06/ef-feature-ctp5-code-first-walkthrough.aspx

設置的初始化策略

在下一節我們將開始改變我們的模型而這又意味着數據庫模式需要改變。目前沒有「開箱即用」的解決方案來演變現有的架構。數據庫的演變是我們目前正在開展的工作,我們前進的方向樣本是在最近的一篇設計博客文章中提供的。

但是有機會運行一些自定義邏輯來首次在AppDomain中使用上下文來初始化數據庫。如果要爲測試運行插入種子數據,這很方便,但如果模型已更改,則重新創建數據庫也很有用。在CTP5中,我們包含了一些您可以插入的策略,但您也可以編寫自定義策略。

在Program.cs的

using System.Data.Entity.Database; 

因爲我們只是想刪除然後重新創建每當模型已更改數據庫中演練的頂部System.Data.Entity.Database添加using語句,所以在Main方法在我的Program類的頂尖我已經添加以下代碼

DbDatabase.SetInitializer<ProductContext>(
    new DropCreateDatabaseIfModelChanges<ProductContext>()); 
相關問題