筆記目錄

Skip to content

EF Core Power Tools 介紹

TLDR

  • EF Core Power Tools 提供圖形化介面進行反向工程,解決原生指令複雜與客製化困難的問題。
  • 透過 efpt.config.json 統一設定檔,確保團隊開發環境一致。
  • 支援 DateOnlyTimeOnly 型別對應,避免 SQL Server 的 date/time 被誤對應為 DateTime
  • 延伸模組版本與 EF Core 及 .NET 版本高度相依,多專案維護時可能需安裝不同版本的 Visual Studio。
  • 若需支援 PostgreSQL 或 SQLite,可安裝 EF Core Power Pack 擴充套件。

EF Core Power Tools 介紹

在 Entity Framework Core 中,官方預設僅提供 Code First 開發方式。若要實現 Database First 的效果,通常需透過反向工程(Reverse Engineering)產生程式碼,但原生指令操作繁瑣且客製化彈性低。EF Core Power Tools 是官方推薦的 Visual Studio 延伸模組,能有效解決上述問題。

主要功能與優勢

  • UI 介面操作:提供圖形化介面執行反向工程,降低手動輸入指令造成的錯誤率。
  • 程式碼客製化:支援透過 T4 範本或 Handlebars 進行進階程式碼客製化。
  • 設定檔管理:所有設定儲存於 efpt.config.json,確保團隊成員使用相同的反向工程設定。
  • 型別對應優化:支援 DateOnlyTimeOnly 對應。在進階設定中勾選「Map DateOnly and TimeOnly」後,可正確對應 SQL Server 的 datetime 型別,避免誤用 DateTime

版本相依性限制

什麼情況下會遇到這個問題:當開發環境同時維護橫跨 .NET Core 3.1 到 .NET 8 的多個專案時。

由於 EF Core Power Tools 的版本與 Entity Framework Core 版本高度相依,而 EF Core 又與 .NET 版本綁定,導致不同專案可能需要對應不同版本的延伸模組。例如:

  • EF Core Power Tools 2.5.1429:最後支援 Entity Framework Core 3.1 的版本,不支援 EF Core 8。
  • EF Core Power Tools 2.6.698:最後支援 Entity Framework Core 7 的版本。

建議做法:若需同時維護多個跨度較大的專案,可能需要安裝不同版本的 Visual Studio(如正式版與 Preview 版)來分別安裝對應的延伸模組。

EF Core Power Pack

解決方案

什麼情況下會遇到這個問題:當開發者需要針對 SQL Server 以外的資料庫(如 PostgreSQL 或 SQLite)進行反向工程時。

由於 EF Core Power Tools 原生主要支援 SQL Server,作者另外開發了 EF Core Power Pack 延伸模組。

安裝與使用

安裝 EF Core Power Pack 後,系統會自動整合以下擴充套件:

  • VisualStudio.Data.Sqlite
  • Npgsql PostgreSQL Integration

使用方式如下:

  1. 在 Visual Studio 中進行「新增資料庫連線」。
  2. 點擊資料連線視窗中的「變更(C)」按鈕。
  3. 在清單中選擇新增的「PostgreSQL」或「SQLite」資料庫類型即可進行後續操作。

異動歷程

  • 2025-07-07 初版文件建立。