MySQL 套件選型分析

針對 .NET 5.0 與 MySQL 5.6.2 條件,評估 MySQL TaskStore PoC 的資料存取套件。

返回 docs

MySQL 套件選型分析

本文件用於第二階段「MySQL TaskStore PoC」前,分析 .NET 5.0 與 MySQL 5.6.2 條件下應採用哪一種 MySQL 存取套件。

本文件只做套件選型分析,不代表已同意安裝套件、修改程式架構、建立 schema、改 public method 或變更專案啟動方式。

既定限制

項目條件
.NET 版本.NET 5.0
DB 版本MySQL 5.6.2
第一個目標MySQL TaskStore PoC
第一版範圍Task / Node / Command / ErrorInfo 持久化
不做事項Web UI、WebApi、ServiceHost、多案場、報表、自動 migration

MySQL 5.6.2 是舊版環境,因此 SQL 語法、欄位型態與套件選型要保守。第一版不使用 JSON 欄位,RawRequestRawResponseAdapterData 先以 TEXTLONGTEXT 處理。

候選方案

方案套件定位
AMySqlConnectorADO.NET MySQL driver,直接執行 SQL
BMySqlConnector + DapperADO.NET driver 加輕量 SQL mapping
CPomelo.EntityFrameworkCore.MySqlEF Core provider,使用 MySqlConnector
DMySql.DataOracle 官方 Connector/NET

評估標準

評估項說明
MySQL 5.6.2 相容性是否適合連接 MySQL 5.6 系列
.NET 5.0 相容性是否可在 .NET 5.0 專案使用
範圍控制是否會把 PoC 擴大成 ORM / migration / schema 管理
測試便利性是否容易用測試或模擬資料驗證
維護風險是否容易被套件生命週期或版本相依拖住
程式碼可讀性是否能讓 TaskStore 實作清楚、可追蹤

方案分析

A. MySqlConnector

MySqlConnector 是純 ADO.NET driver,最貼近 PoC 需求。NuGet 顯示支援 .NET Standard 2.0,可供 .NET 5.0 專案使用;官方網站列出 MySQL 5.6 相容範圍。它不會主動引入 ORM、migration 或 DbContext 架構,適合第一版保守 SQL。

風險是需要自行撰寫 SQL、mapping、交易、連線、錯誤轉換與測試資料建立方式。適合程度:高。

B. MySqlConnector + Dapper

此方案保留 SQL 控制權,同時減少手寫 mapping。Dapper 是輕量 mapper,不會強迫導入 DbContext 或 migration,適合查詢 Task / Node / Command / ErrorInfo 這類扁平資料。

風險是比純 MySqlConnector 多一個套件;Dapper 不處理 MySQL 連線本身,仍需搭配 MySqlConnector。適合程度:中高,可作為第二步補強。

C. Pomelo.EntityFrameworkCore.MySql

Pomelo 適合正式 ORM、DbContext、LINQ 與長期資料模型。Pomelo 5.0.x 對應 EF Core 5.0.x,與 .NET 5.0 路線相近,底層使用 MySqlConnector。

風險是會把 PoC 擴大到 EF Core、DbContext、migration 與模型設定。MySQL 5.6.2 需額外驗證,且容易在資料模型尚未穩定前過早固定 ORM 結構。適合程度:中。

D. MySql.Data

MySql.Data 是 Oracle 官方 Connector/NET。NuGet 顯示套件可透過 .NET Standard 2.0 供多種 .NET target 使用。

風險是第一版最重要的是可控與好測,而不是官方身分;若搭配 EF Core,官方 provider 的版本相依還需另查。適合程度:中,可列為備選。

建議排序

建議順序方案理由
1MySqlConnector最小、可控、符合 MySQL 5.6.2 與 PoC 範圍
2MySqlConnector + Dapper若手寫 mapping 開始變多,可在第二步加入
3MySql.Data官方備選,但第一版不優先
4Pomelo.EntityFrameworkCore.MySql適合 schema 穩定後再評估,不建議第一步導入

推薦方案

MySqlConnector

暫不導入 Dapper、EF Core、Pomelo 或 migration。第一版目標是驗證 TaskStore 寫入與查詢,不是建立完整資料存取框架。MySQL 5.6.2 條件下,保守 SQL 比 ORM 自動產生 SQL 更可控。

建議第一版套件策略

第一步:

MySqlConnector only

第二步,若 mapping 重複或查詢變多:

MySqlConnector + Dapper

暫不建議:

Pomelo.EntityFrameworkCore.MySql
EF Core migration
MySql.Data.EntityFrameworkCore

PoC 驗收建議

  1. 可連線 MySQL 5.6.2。
  2. 可建立 PoC schema。
  3. 可寫入 task_executions
  4. 可寫入 node_executions
  5. 可寫入 command_executions
  6. 可寫入 task_errors
  7. 可查詢指定 TaskId 的完整歷程。
  8. DB 連線失敗時可轉成標準 ErrorInfo 或明確 Log。
  9. 不影響既有 Core / Adapter / WorkflowSimulation 測試。

需先確認

  1. 是否接受第一版只加入 MySqlConnector
  2. 是否暫不導入 Dapper。
  3. 是否暫不導入 EF Core / Pomelo。
  4. 是否同意第一版 SQL 採手寫保守語法。
  5. 是否同意先做 schema 初稿,再進入程式 repo 實作。

參考來源

建議下一步

MySQL Schema 自動建表設計請參考:MySQL Schema 自動建表設計

MySQL schema Class 初稿請參考:MySQL schema Class 初稿

建議下一步做「Schema Attribute 實作前確認」,確認不改動 Core 與既有 public method 後再進入程式 repo。

在 schema 初稿確認前,不建議直接進入程式 repo 安裝套件。