星期三, 3月 17, 2021

[EF] 移動 edmx 內的 model

實務會有需求是把 model 放在單一資料夾或 Project 內統一管理,該筆記是把 edmx 內的 Model tt 檔案移至另外的資料夾去

AdventureWorks edmx 已事先建立,且只拉近一個 Address,從下圖可以看見 edmx 內有兩個 tt 檔案,分別為 AdventureWorks.Context.tt 和 AdventureWorks.tt,目標是要把 AdventureWorks.tt 移到 EFModel 資料夾內

[EF] 移動 Edmx 內的 Model-1

在 EFModel 內新增 EF 6.x DbContext 產生器,並取為 AdventrueWorks.tt

[EF] 移動 Edmx 內的 Model-2

新增完成後會在 EF Model 內看見 AdventureWorks.Context.tt 和 AdventureWorks.tt 這兩個新的 tt 檔案,AdventureWorks.tt 為 Model 新存放處

[EF] 移動 Edmx 內的 Model-3

打開 EFModel 資料夾內的 AdventureWorks.tt 檔案,並修正 inputFile 為 @"..\DBContext\AdventureWorks.edmx";,讓 edmx 更新時會把 model 放在此處

[EF] 移動 Edmx 內的 Model-4

打開 DBContext 資料夾內的 AdventureWorks.Context.tt,並搜尋 using 關鍵字後,把 EFModel namespace 給加進去,如下圖

[EF] 移動 Edmx 內的 Model-5

儲存後就可以看見 EFModel 資料夾內的 AdventureWorks.tt 內產生 Address.cs,經過上述兩步驟就算是完成 AdventureWorks.tt 檔案搬移,最後刪除
  • DBContext 資料夾內的 AdventureWorks.tt (已移轉) 
  • EFModel 資料夾內的 AdventureWorks.Context.tt  (新增時自動產生,但沒有用到)
[EF] 移動 Edmx 內的 Model-6

在 edmx 內再把 AddressType 給加進來,就可以看見 EFModel 資料夾的 AdventureWorks.tt 下出現 AddressType.cs 檔案

[EF] 移動 Edmx 內的 Model-7

更換位置後,假如有需要變成 namespace 的話,tt 檔案都有 [自訂工具命名空間] 屬性可以設定調整

沒有留言:

張貼留言