2016-04-20 175 views
2

我正在玩EF並設置了一個從數據庫生成的模型。該模型僅限代碼,沒有設計師。EF從數據庫更改中重新生成代碼模型

我給我的一個數據庫表添加了一個字段。

有沒有簡單的方法可以「重新生成」模型代碼?我想如果我使用過設計器,這會更容易,我可以找到相反的方式遷移信息(添加一個模型屬性並獲得一個遷移來更新數據庫),但沒有關於我如何傳播從數據庫到模型的變化。

我認爲我可以做手工,但這似乎不是理想......

+0

https://msdn.microsoft.com/en-us/data/jj591621.aspx –

+0

http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx –

+0

@VolodymyrBilyachat - 我只是在閱讀之前閱讀這篇文章......似乎正在做與我正在尋找的相反(正如問題所述)? – jleach

回答

2

一種選擇是隻刪除自動生成的從項目類,並再次產生他們。雖然遵循這種方法,但我們只需要確保這一點,我們應該爲數據模型(從DbContext繼承的類名)提供與前一個相同的名稱。

+0

我曾考慮過這一點,但不確定是否有更好的方法。我特別擔心的是,我可能稍後必須做出任何調整,我必須重新調整這樣做(我還沒有調整任何東西,只是想提前考慮) – jleach

+0

你仍然可以調整,如果你只是確保您隨時隨地傳播更改。例如如果您在模型代碼中進行了更改,請確保在開始修改數據庫之前使用遷移/初始化程序將它們推送到數據庫。這樣你就不會失去同步,如果你稍後在數據庫中進行大規模的修改,你可以刪除你的模型代碼並重新進行修改。此外,如果您想爲模型添加功能,請利用它們作爲部分類。 – Tone

+0

@聲音我更擔心調整不會推回到數據庫阻抗不匹配膠水,因爲它是。我對EF/ORM非常陌生,但曾想過我可能會遇到具有導航屬性的案例,這可能會成爲一個問題。但是,我的實體和領域模型是分開的,因此可能足夠安全,以便將不匹配膠粘劑放在DTO適配器中,或者也許這是所有不必要的擔心。儘管如此,我還是會努力的,現在比一個小時前我感覺好多了。 – jleach

2

我記得在前一陣子做了這樣的事情 - 它首先被稱爲反向工程代碼。基本上它會查看當前數據庫並根據該數據庫爲您創建POCO類。我已經做到了既創建一個新的項目時,作爲本教程提示: https://msdn.microsoft.com/en-us/library/jj200620.aspx

,我已經使用這個工具的舊版本也做到了: https://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d

到最後,你會發現Jaydeep的刪除和重新開始的方法是最簡單的。

+0

謝謝,msdn的這個評論有助於將它放在上下文中:_ Code First to Database嚮導旨在生成一組起始點集合,然後您可以對其進行調整和修改。如果您的數據庫模式發生變化,您可以手動編輯這些類,或者執行另一個逆向工程來覆蓋這些類。我將把這個工具放在我的腦後,但現在可能只是用Jaydeep。 – jleach

相關問題