4

我們的解決方案目前基於實體框架數據庫優先。我們有一個T4模板,可以從EDMX生成存儲庫類。從實體框架數據庫優先切換到代碼優先

我們正在審查我們的計劃發佈更改的方法,尤其是數據庫更改。如果我們首先繼續使用數據庫,那麼我們將需要單獨生成腳本來更改開發和其他數據庫。

看起來,使用Code First,我們只需更改模型並生成腳本來更改各種數據庫。這看起來更直接,不涉及手工編寫腳本過程和降低風險。

所以,如果我們作出這樣的轉變,是單純的情況:

  • 項目正在從EDMX先前生成的模型在我們的實體到(他們都是目前在一個類文件) (最好 獨立)類文件的實體內的文件夾中的項目
  • 調整T4模板從他們的新位置拿起模型
  • 不再使用EDMX從數據庫中更新
  • 當我們要做出改變的模式,簡單地改變(以前,但不再生成)班
  • 使用的Code First遷移來實現,並轉移到測試其他 數據庫

最後會怎樣我們看到模型之間的關係?有沒有創建圖表的方法?

感謝,

克里斯

+0

如果您已經在生產,我會先堅持使用Db,並使用像Redgate SQL Compare這樣的工具來移動環境間的數據庫更改。 – Maess

+0

謝謝,雖然尚未投入生產。 – Chris

+0

看到這個[post](http://devgush.com/2014/02/24/migrating-a-project-from-database-first-to-code-first/) –

回答

0

這是我在過去做。隨着時間的推移,我嘗試了許多不同的方法目前,我使用EF Reverse Poco Generator來允許對數據庫進行更改,並反映在代碼中並最初生成Model/Poco類。我也可以手動更改現有的類。然後我爲每次更改生成遷移。

代碼優先模型允許定義與現在相同的導航屬性,因此您可以通過代碼和工具查看關係,從而可視化類關係。

如果您想查看數據庫結構,則可以使用MS Sql中的「數據庫圖」功能(如果這是您正在使用的功能)。我的印象是,鼓勵您使用實體框架本身以外的工具來可視化數據庫或類關係。這允許EF團隊專注於數據庫代碼,而不是與VS進行復雜的UI集成。

我個人依賴數據庫圖來檢查我的類結構和它們輸出的數據庫,但我發現僅僅看看Poco類是很自然的。我還沒有找到任何特殊的班級繪圖工具。

就這麼說,你在陳述中是正確的。雖然我會從EF Reverse Poco從現有數據庫生成的類開始,爲您提供更大的靈活性。將T4指向那些使用反射而不是XML解析的類(請看T4 Toolbox進行輸出文件管理)以幫助您入門。

當你開始時,在裝配體上反映是一個棘手的問題。您需要確保已編譯EF/Poco程序集,以便它可以加載到內存中,並在T4中反映出來。在極少數情況下,根據加載程序集的方式,可能會停止刷新程序集,因此必須重新啓動VS.我每個月都會遇到幾次這樣的事情,所以這對我來說不是一個難題。一旦我把它啓動並運行,它就有意義了。

+0

剛剛看到與您的博客文章鏈接的評論。我試過了VS發生器,但更喜歡EF反向波動發生器,因爲它具有靈活性,功能以及您可以反覆使用的事實。 – AC4