2012-01-06 69 views
3

過去幾周我一直在做一個側面項目,並首先使用EntityFramework代碼構建了系統。這在開發過程中非常方便,因爲我需要對代碼進行的任何更改都很容易地反映在數據庫中。但現在,我想推出的網站,但繼續發展,我不想丟棄和重新創建數據庫每次我做一個模型的調整...從實體框架代碼首先從開發移植到生產

有沒有辦法讓EF生成更改模型更改的腳本,以便我可以將它們自己部署到生產服務器?而且,如何在不需要刪除並重新創建表格的情況下將數據庫用於其他位置(Windows服務在網站的後臺),並使用與我一樣的模型?有點像「代碼第一,但現在我有一個生產數據庫,不要打破它...」

回答

4

我個人使用VS2010中的內置數據工具做更新生產的數據庫模式同步。

另一個更便宜的工具,如果你沒有VS Premium Premium SQLDelta是過去使用過的,非常好。

這兩個工具都連接到兩個數據庫版本,並允許您首先同步表模式。兩者都有導出到SQL腳本功能。

即將推出的EF就是Migrations,它可以讓您在解決方案中解決這個問題,但它仍處於測試階段。遷移使您可以使用代碼描述數據庫的升級和降級事件。

+0

遷移看起來可能很方便,但直到RTM,我會堅持VS 2010中內置的數據工具。得到一個終極的副本,所以應該有這個功能。謝謝! – TiernanO 2012-01-06 09:54:18

3

EF的RTM版本沒有此功能。一旦你投入生產,你必須自己處理。常用的方法是關閉生產環境中的數據庫初始化程序,並使用VS Premium或RedGate Database比較等工具比較生產和開發數據庫並創建更改SQL腳本。

您也可以嘗試使用EF Migrations,這正是您要求的工具。問題在於它仍然是測試版(但它應該是EF 4.3的一部分),因此它不必在所有情況下都能正常工作,並且RTM中的功能/ API可以更改。

+0

感謝EF Migrations的提示以及關於VS中db工具的註釋。 – TiernanO 2012-01-06 09:55:19

+0

您可能有興趣知道SQL Compare 10(以及SQL Source Control 3)現在具有全新的遷移功能。這提供了一種通過重寫由SQL比較生成的腳本來控制升級過程的機制。 http://www.red-gate.com/products/sql-development/sql-compare/deployment – 2012-01-06 21:38:39