2015-03-02 149 views
0

我正在使用EF來生成我的模型使用Model.context.tt模板described in this post.從數據庫更新時保留對模型的更改?

我的模型已生成後,我想進去,並對模型進行一些修改。我能夠做到這一點,但我遇到的問題是,如果我從數據庫更新模型,它將覆蓋我所做的任何定製。

是否有任何方法來保留我對模型所做的更改,同時仍從數據庫更新?

回答

1

您需要創建與名稱完全相同的部分類,並在與生成的模型相同的名稱空間中,然後才能修改該類,而不必在每次重新生成T4模板時都不會丟失更改。

如果您需要對原始類進行更精細的調整編輯,則必須編輯.tt模板。雖然我會高度推薦建議查看Code First(這對於現有數據庫來說更可能),因爲您可以完全控制類+映射。

您可能首先複製當前生成的文件並將它們用作代碼優先模型的基礎。

一個常見的誤解是Code First不適用於現有的數據庫/數據庫第一個工作,因爲名稱。但是這是錯誤的。

  • 代碼首先 =編寫代碼和裝飾型號屬性或上下文 自定義映射。
  • EDMX/Designer =使用Visual Studio設計器創建一個XML(.edmx),然後由T4(.tt)模板進行處理以生成最終的類+上下文。 我個人覺得這個方法很痛苦,因爲我不斷地鬆的變化(自定義映射/關係等)
  • 實體遷移 - 這是你第一次寫你的代碼,等同於「代碼優先」上述方法,但是您然後運行Migrations以生成和升級/降級數據庫。
+0

Code先看起來對我來說這可能是一個很好的選擇。從數據庫優先轉換到代碼優先有多難?你能推薦關於這個開關的任何閱讀嗎? – 2015-03-03 00:19:35

+0

另外 - 我所做的更改最終需要複製到生產數據庫服務器。我假設可以從我的項目更新數據庫而不丟失所有數據? – 2015-03-03 00:22:12

相關問題