首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Entity Framework 6 整合 MySQL 實戰筆記:NuGet 配置、連接字符串與 DbContext 定義

     編輯:MySQL 綜合教學

Entity Framework 6 整合 MySQL 實戰筆記

團隊技術棧以 EF 為主,近期項目需接入 MySQL。本文記錄 EF6 + MySQL.Data.Entity 完整接入流程,包含 NuGet 依賴、配置文件解析、連接字符串規範、上下文定義等關鍵節點。

環境版本基線

  • MySQL Server:5.6.25 (Windows Installer)
  • Entity Framework:6.x
  • MySQL.Data / MySQL.Data.Entity:6.9.6 (NuGet)

NuGet 安裝與自動配置

Install-Package MySql.Data.Entity -Version 6.9.6

安裝後 App.config/Web.config 自動注入:

1. Provider 註冊

<entityFramework>
  <providers>
    <provider invariantName="MySql.Data.MySqlClient"
              type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6,
                    Version=6.9.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </providers>
</entityFramework>

2. DbProviderFactories 註冊

<system.data>
  <DbProviderFactories>
    <remove invariant="MySql.Data.MySqlClient" />
    <add name="MySQL Data Provider"
         invariant="MySql.Data.MySqlClient"
         description=".Net Framework Data Provider for MySQL"
         type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data,
               Version=6.9.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </DbProviderFactories>
</system.data>

連接字符串配置

<connectionStrings>
  <add name="MyContext"
       connectionString="Server=localhost;Port=3306;Database=Test;Uid=root;Pwd=1111;CharSet=utf8;"
       providerName="MySql.Data.MySqlClient" />
</connectionStrings>
  • Server/Port:主機端口
  • Database:初始資料庫(對應 Initial Catalog)
  • Uid/Pwd:賬號密碼
  • CharSet=utf8:防止中文亂碼,關鍵參數
  • 生產環境建議加 SslMode=Required、ConnectionTimeout=30

DbContext 定義與配置類

[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class MyContext : DbContext
{
    public MyContext() : base("name=MyContext") { }

    public DbSet<EntityA> EntitiesA { get; set; }
    public DbSet<EntityB> EntitiesB { get; set; }
    // 其他 DbSet...
}
  • DbConfigurationType:指定 MySQL 專用配置類,自動處理 SQL 生成差異
  • base("name=MyContext"):引用配置文件中 name="MyContext" 的連接串

常見坑位與解決

現象原因解決
Migration 報錯「Provider not found」配置文件 provider 節點缺失或版本號不匹配核對 Version=6.9.6.0 與 DLL 一致
中文存入變 ???連接串缺少 CharSet=utf8 或表字符集非 utf8補全連接串參數,表建立時 CHARSET=utf8mb4
Code First 建表無主鍵實體類未標註 [Key] 或無 Id 約定屬性添加 [Key] Attribute 或 Fluent API 配置
並發衝突異常缺少樂觀鎖 [Timestamp] / [ConcurrencyCheck]為實體添加 byte[] RowVersion 屬性

後續規劃

  • 啟用 MySqlEFConfiguration 的 CommandTimeout 調優
  • 引入 Pomelo.EntityFrameworkCore.MySQL 評估 EF Core 遷移可行性
  • 建立讀寫分離連接串工廠,支援主從路由

EF6 + MySQL 整合核心在於「Provider 註冊正確、連接串字符集完整、上下文配置類指定」。完成這三點,後續業務開發即可享受 LINQ 強類型查詢與自動遷移紅利。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved