我一直在玩Entity Framework 4,使用模型驅動方法從我的實體生成數據庫腳本。這很好,但我不確定在版本化數據庫時它是如何工作的。我猜如果我想使用一個活躍的記錄類型遷移框架,我不得不以另一種方式工作,並從我的數據庫中生成我的實體?有什麼方法可以使用模型驅動的方法並正確地版本化數據庫?實體框架的數據庫遷移4
回答
這將很快作爲NuGet包稱爲EntityFramework.Migrations
由斯科特Hanselman在2011年微軟技術大會(在http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV349可在線)進行演示。相關的部分是在45分鐘內
總之,一旦安裝了軟件包,你會進入以下到包管理器控制檯生成一個數據庫更改腳本:
migrate -script
UPDATE(13 -Nov-2011)
這個包的alpha 3版本現在在NuGet上可用。它不是使用上述的cmdlet migrate -script
,而是使用cmdlet Add-Migration <migrationname>
。在ADO.NET團隊博客上可以找到一個walk-through of its use。
UPDATE(14-FEB-2012)
此功能是現在可作爲主EntityFramework NuGet package的一部分,從版本4.3。使用EF 4.3的updated walk-through可以在ADO.NET團隊博客上找到。
+1進行更新 – Karsten 2012-03-14 12:03:25
好吧,如果你想像ActiveRecord一樣工作,那麼你需要像ActiveRecord一樣工作。 :)
但是,如果您想使用model-first但仍然使用遷移,這將是可能的,但將需要您的額外工作。 Model-first將生成一個數據庫更改腳本。您必須將相關部分提取到遷移中,以及手動編寫撤消腳本。雖然這涉及到一些體力勞動,但這並不會讓我感到非常困難。
ScottGu提到一些有關這在blog entry:
我們還將在未來,將允許您以編程自動化/腳本數據庫模式的遷移中支持與EF一個「遷移」功能。
[編輯]
我想他可能是指Entity Designer Database Generation Power Pack,由莫爾塔扎Manavi在another SO answer回答。
我正在致力於替代EF.Migrations庫 - EntityFramework.SchemaCompare。它允許將數據庫模式與代表數據庫上下文的實體模型進行物理比較(EF.Migrations不這樣做)。這可以在數據庫初始化期間或根據請求手動觸發。請看下面的例子
#if DEBUG
Database.SetInitializer(new CheckCompatibilityWithModel<DatabaseContext>());
#endif
描述DB模式和模型之間的差異數據庫初始化過程中它會拋出一個異常,如果不兼容的問題被發現。另外,您可以隨時找到代碼中的這些差異這樣
using (var ctx = new DatabaseContext())
{
var issues = ctx.Database.FindCompatibilityIssues();
}
然後有在手,你可以更新數據庫架構或模型的差異/不兼容的問題。
當您需要完全控制數據庫模式和模型設計和/或在多個團隊成員正在使用同一個數據庫模式和模型的團隊中工作時,此方法特別有用。它也可以用於EF.Migrations之外。
叉我在GitHub上:https://github.com/kriasoft/data
- 1. 實體框架數據庫遷移
- 2. 如何重置實體框架4的數據庫遷移
- 3. 實體框架遷移API
- 4. 實體框架遷移:PrimaryKey
- 5. MySQL實體框架遷移
- 6. 實體框架遷移
- 7. 實體框架代碼首先遷移和數據遷移
- 8. Class Library中的C#實體框架數據庫遷移
- 9. 實體框架4.3更新數據庫時的遷移異常
- 10. 實體框架自動遷移現有的數據庫
- 11. 遷移錯誤的實體框架與Oracle數據庫
- 12. 實體框架4.3現有數據庫的遷移問題
- 13. 傳統數據庫上的實體框架遷移
- 14. 使用不同數據庫的實體框架遷移
- 15. 實體框架5,遷移,MVC 4,更新數據庫-force - 對服務器
- 16. 實體框架數據庫遷移腳本
- 17. 使用實體框架遷移數據庫
- 18. 實體框架多對多數據庫遷移
- 19. 使用實體框架處理數據庫遷移
- 20. 實體框架5遷移:建立數據庫
- 21. 實體框架核心更新 - 數據庫特定遷移
- 22. 實體框架4.3數據庫遷移代碼第一,數據庫依賴
- 23. 無法實現用於實體框架數據遷移的IDbContextFactory
- 24. 如何實現用於實體框架數據遷移的IDbContextFactory
- 25. 實體框架4.3遷移移動現有數據
- 26. 實體框架遷移器的連接
- 27. 網站實體框架遷移的ArgumentException
- 28. 使用實體框架4.3遷移而不依賴於實際的數據庫
- 29. 實體框架,數據庫
- 30. Symfony框架數據庫遷移
微軟現在此功能的實體框架積極努力,您可以在ADO.NET團隊博客的代碼首先遷移職位讀到它。 http://blogs.msdn.com/b/adonet/ – 2011-09-22 14:15:22