2012-07-30 121 views
3

我正在使用VS2012和EF 5.0與模型第一種方法。我想知道是否有任何好方法來生成增量DDL來更新模型更改而不刪除所有表並丟失已有的數據。如何從EF5.0模型更新數據庫模式首先更改?

+0

百萬美元的問題。我已經安裝了VS2012,並與EF混合在一起,我真的很失望,微軟把這變成了多麼複雜。 我很想給你一個答案,但我也在尋找一個簡單的解決方案。我通常使用Devart的Postgresql的Entity Developer組件,它正是我所需要的,它從模型更新數據庫而不刪除表。我希望看到vs2012附帶此功能,但我保持低期望。 – detay 2012-08-13 01:17:33

+0

我一直在做的補償,是生成DDL腳本(從模型生成數據庫),然後運行我從數據庫生成的數據腳本,有時我必須調整,如果我添加或刪除有數據的表中的字段在他們中。並且我將數據腳本存儲在TFS中,以便每次重新生成數據庫時都可以重新運行以重新加載數據。我很想找到一些更好的解決方案,但相比丟失所有數據,這種方法相當不錯... – Dave 2012-08-14 05:48:25

回答

1

我喜歡在Visual Studio中使用SQL Server數據項目來保持我的數據與數據庫同步 - 就像一個迷你SQL服務器模式存儲。

基本上我們在這裏做的是使用模型的DDL腳本更新數據項目的模式,然後比較這些變化並將其推送到數據庫。請確保首先生成模型的DDL腳本。

  1. 創建一個新的SQL Server數據庫項目
  2. 右鍵單擊數據項目,並從數據庫服務器導入現有的架構
  3. 右鍵單擊數據項目,並從模型的第一個項目導入生成的DDL腳本。
  4. 右鍵單擊數據項目,做一個模式與數據庫服務器比較項目的
  5. 基於此架構
  6. 更新數據庫進行比較(點擊更新)

要更新您的數據庫剛剛生成每次並導入模型的SQL腳本,比較和更新。它需要幾步,但完美的作品。

+0

我想這是毫無意義的,現在MSFT已經決定放棄Code First,這是諷刺的,因爲那是一種方法,當EF出來時,我們大多數人都會使用Model First或Database First。 – Dave 2015-03-20 19:23:38

+0

我認爲未來的最佳答案是使用像DevArt這樣的支持所有3種方法的東西,因爲Sparx EA也拒絕從他們的模型中適應代碼第一代,而數據庫優先不再是MSFT的選項,這對於引入EA製作的模型更改。 – Dave 2015-03-20 19:26:16