namespace EfMigrationsDemo.Models
{
public class Todo
{
public int Id { get; set; }
public string Title { get; set; }
public bool IsDone { get; set; }
}
}
在 AppDbContext.cs:
using Microsoft.EntityFrameworkCore;
using EfMigrationsDemo.Models;
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options)
: base(options) { }
public DbSet<Todo> Todos { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=TodoDb;Trusted_Connection=True;");
}
6. 啟用 Migrations
6.1 初始 Migration
dotnet ef migrations add InitialCreate
於專案下新增 Migrations/ 目錄與 InitialCreate C# 檔。
6.2 更新資料庫
dotnet ef database update
根據 InitialCreate 建立 TodoDb 及 Todos 資料表。
7. 實作範例:簡單的 Todo 應用
7.1 CRUD 測試程式碼
在 Program.cs:
using var db = new AppDbContext();
// 新增
var t1 = new Todo { Title = "Buy milk" };
db.Todos.Add(t1);
db.SaveChanges();
// 查詢
var list = db.Todos.ToList();
Console.WriteLine($"Count: {list.Count}");
// 更新
var todo = list.First();
todo.IsDone = true;
db.SaveChanges();
// 刪除
db.Todos.Remove(todo);
db.SaveChanges();
執行 dotnet run 可驗證遷移與 CRUD。
後續章節示例程式碼與細節,可依需求補齊。
EF Migrations 流程圖
以下使用 Mermaid 語法繪製 EF Core Migrations 的主要流程:
flowchart TD
A[撰寫實體模型 Models] --> B[新增 DbContext 並註冊]
B --> C[執行 Migration 命令]
C --> C1[dotnet ef migrations add <Name>]
C1 --> D[生成 Migrations 類別檔案]
D --> E[檢查、修改 Up/Down 方法]
E --> F[更新資料庫]
F --> F1[dotnet ef database update]
F1 --> G[資料庫結構同步]
G --> H[執行程式或測試]
H --> I{需要修改模型?}
I -- 是 --> J[調整實體屬性]
J --> C
I -- 否 --> K[流程結束]