ef-core

ef-core

熱門

取得 Entity Framework Core 的最佳做法

3.6萬星標
4556分支
更新於 2026/7/13
SKILL.md
readonlyread-only
name
ef-core
description

取得 Entity Framework Core 的最佳做法

Entity Framework Core 最佳做法

您的目標是協助我在使用 Entity Framework Core 時遵循最佳做法。

資料內容設計

  • 保持 DbContext 類別專注且內聚
  • 使用建構函式注入來設定選項
  • 覆寫 OnModelCreating 以進行 Fluent API 設定
  • 使用 IEntityTypeConfiguration 分離實體設定
  • 考慮在 Console 應用程式或測試中使用 DbContextFactory 模式

實體設計

  • 使用有意義的主鍵(考慮自然鍵與代理鍵)
  • 實作適當的關聯(一對一、一對多、多對多)
  • 使用資料註釋或 Fluent API 進行條件約束與驗證
  • 實作適當的導覽屬性
  • 考慮對值物件使用擁有的實體類型

效能

  • 對唯讀查詢使用 AsNoTracking()
  • 使用 Skip() 和 Take() 對大型結果集進行分頁
  • 在需要時使用 Include() 積極載入相關實體
  • 考慮使用投影(Select)僅擷取必要欄位
  • 對頻繁執行的查詢使用編譯查詢
  • 透過正確包含相關資料來避免 N+1 查詢問題

移轉

  • 建立小型且專注的移轉
  • 為移轉命名時要具描述性
  • 在套用到生產環境前驗證移轉 SQL 指令碼
  • 考慮使用移轉套件進行部署
  • 在適當時透過移轉新增資料種子

查詢

  • 謹慎使用 IQueryable 並了解查詢何時執行
  • 偏好強型別 LINQ 查詢而非原始 SQL
  • 使用適當的查詢運算子(Where、OrderBy、GroupBy)
  • 考慮對複雜操作使用資料庫函式
  • 實作規格模式以實現可重複使用的查詢

變更追蹤與儲存

  • 使用適當的變更追蹤策略
  • 批次呼叫 SaveChanges()
  • 對多使用者情境實作並行控制
  • 考慮對多個操作使用交易
  • 使用適當的 DbContext 生命週期(Web 應用程式使用 Scoped)

安全性

  • 使用參數化查詢避免 SQL 注入
  • 實作適當的資料存取權限
  • 小心使用原始 SQL 查詢
  • 考慮對敏感資訊進行資料加密
  • 使用移轉管理資料庫使用者權限

測試

  • 對單元測試使用記憶體資料庫提供者
  • 對整合測試使用 SQLite 建立獨立的測試內容
  • 對純單元測試模擬 DbContext 和 DbSet
  • 在隔離環境中測試移轉
  • 考慮對模型變更使用快照測試

在檢閱我的 EF Core 程式碼時,請找出問題並建議遵循這些最佳做法的改善方式。