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

Entity Framework 6 Code First 遷移 MySQL 數據庫實戰

     編輯:MySQL 綜合教學

Entity Framework 6 Code First 遷移 MySQL 數據庫實戰

記錄在 .NET 專案中使用 EF 6.0 Code First 模式,配合 MySQL Connector/Net 6.9.5,實現實體類映射、自動建表、Code First Migrations 版本控制、Fluent API 進階映射的完整流程。

一、 環境準備

  1. NuGet 安裝:Install-Package EntityFramework -Version 6.0.0
  2. 下載並安裝 MySQL Connector/Net 6.9.5(或更新版),確保 GAC 中註冊 MySql.Data、MySql.Data.Entity.EF6。

二、 定義實體類

public class Blog {
    public int BlogId { get; set; }
    public string Name { get; set; }
    public virtual List Posts { get; set; } // 導航屬性,啟用延遲加載
}

public class Post {
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }
    public int BlogId { get; set; }
    public virtual Blog Blog { get; set; }
}
實體類代碼

三、 創建 DbContext 並指定 MySQL 連接

public class BloggingContext : DbContext {
    public BloggingContext() : base("MySqlServer") { } // 連接字符串名稱
    public DbSet Blogs { get; set; }
    public DbSet Posts { get; set; }
}
DbContext代碼

App.config / Web.config 中連接字符串:


  

四、 首次運行自動建表

using (var db = new BloggingContext()) {
    db.Blogs.Add(new Blog { Name = "Another Blog" });
    db.SaveChanges();
    foreach (var blog in db.Blogs) Console.WriteLine(blog.Name);
}
讀寫代碼

運行後 MySQL 自動創建數據庫、表、外鍵關係。

生成的數據庫
表結構

五、 啟用 Code First Migrations

  1. 包管理器控制台執行:Enable-Migrations
    生成 Migrations\Configuration.cs。
  2. 修改 Configuration.cs 註冊 MySQL SQL 生成器(關鍵步驟):
    SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator());
Configuration.cs
註冊MySQL生成器

六、 模型變更遷移

  1. 給 Blog 添加 Url 屬性。
  2. PMC 執行:Add-Migration AddUrl → 生成遷移類。
    Add-Migration成功
  3. 執行:Update-Database -Verbose → 更新數據庫結構。
    Update-Database
    數據庫已更新

七、 Fluent API 進階映射

在 OnModelCreating 中配置:

protected override void OnModelCreating(DbModelBuilder modelBuilder) {
    modelBuilder.Entity()
        .Property(b => b.Name)
        .IsRequired()
        .HasMaxLength(100);
    modelBuilder.Entity()
        .Property(p => p.Title)
        .HasColumnType("varchar")
        .HasMaxLength(200);
    base.OnModelCreating(modelBuilder);
}
Fluent API配置

再次 Add-Migration + Update-Database 完成結構同步。

遷移命令
最終表結構

八、 參考文檔

MSDN 官方指南:Code First Migrations with MySQL

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