我一直都是面向數據庫的程序員,所以直到今天,我一直使用數據庫驅動的編程方法,我對T- SQL和SQL Server。試用EF代碼優先和遷移 - 絆腳石
我想換我的頭周圍的實體框架6 代碼優先方法 - 坦率地說 - 我掙扎。
我有一個現有的數據庫 - 所以我做了Add New Item > ADO.NET Entity Data Model > Code-First from Database
,我得到了一堆代表我現有數據庫的C#類。到現在爲止還挺好。
我現在要做的是探索如何處理正在進行的數據庫升級 - 無論是架構還是「靜態」(預填充)查找數據。我的第一個抱怨是,從數據庫反向工程的實體正在使用Fluent API進行配置,而創建我想創建爲具有數據註釋的C#類的新表似乎更自然。 「混合」這兩種方法有什麼問題嗎?或者我可以告訴逆向工程步驟只使用數據註釋屬性而不是Fluent API?我試圖創建漂亮的和小的遷移 - 每個要添加的每一組功能(例如,新表,新索引,一些新列等等) ) - 但看起來我不能有超過一個「待定」遷移......當我有一個,並且我進一步修改我的模型類,並且我嘗試使用add-migration (name of migration)
進行第二次遷移,我是與:
無法生成顯式遷移,因爲以下顯式遷移未決:[201510061539107_CreateTableMdsForecast]。在嘗試生成新的顯式遷移之前應用待處理的顯式遷移。
認真?!?!?我不能有超過一個,單個等待移植?我需要在每次微小遷移後運行update-database
我正在添加?
好像是一個BIG缺點!我寧願創建我的10,20個小巧,易於理解的遷移,然後然後將它們一舉全部應用 - 無法做到這一點!?!?這真的很難相信.....任何方式呢?
關於你的第一個問題,你可能能夠自定義使用的T4模板(https://www.nuget.org/packages/EntityFramework.CodeTemplates.CSharp/),但這是很多工作。我已經越來越意識到我可以如何將我的擔憂與流利的API分開,我創建了一個映射文件夾並在那裏完成所有配置。 –
對於遷移,我建議您使用小增量包。然後,當我準備進行生產部署時,我將使用-Source和-Target屬性重新開發我的開發數據庫,然後在生成我們的DBA需要的單個腳本之前全部重新應用它們。 –