目的

透過EFCore對db做查詢,為了降低門檻採用SQLite當範例資料庫。

建立新專案

選擇ASP.NET Core Web API專案範本,並執行下一步 步驟1

設定新的專案

命名你的專案名稱,並選擇專案要存放的位置。 步驟2

其他資訊

直接進行下一步 步驟3

NuGet加入套件

  • Microsoft.EntityFrameworkCore.Sqlite
  • Microsoft.EntityFrameworkCore.Design

步驟4

新增Student.cs類別檔

新增Models資料夾,並在裡面新增Student.cs類別檔 範例5-1

編輯Student.cs類別檔

  public class Student {
    public int Id { get; set; }
    public string Name { get; set; } = "BillHuang";
    public int Age { get; set; }
  }

範例6-1

新增EFCoreContext.cs類別檔

新增DBContext資料夾,並在裡面新增EFCoreContext.cs類別檔 範例7-1

編輯EFCoreContext.cs類別檔

//別忘了using
using Microsoft.EntityFrameworkCore;
using EFCoreExample.Models;

namespace EFCoreExample.DBContext {
  //繼承DbContext
  public class EFCoreContext : DbContext {
    //複寫OnConfiguring
    protected override void OnConfiguring(DbContextOptionsBuilder options) {
      //指定連線字串,連到SQLite
      options.UseSqlite("Data Source=Student.sqlite");
    }
    //設定student資料表
    public DbSet<Student> Students { get; set; }
  }
}

範例8-1

編輯Program.cs檔

//別忘了using
using EFCoreExample.DBContext;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
//註冊EFCoreContext
builder.Services.AddDbContext<EFCoreContext>();
//下面省略

範例9-1

到套件管理器主控台下Terminal指令

檢視>其他視窗>套件管理器主控台 範例10-1 下方會出現命令列 範例10-2 輸入dir會顯示目錄檔案及子目錄清單 範例10-3 輸入cd EFCoreExample移動到專案檔底下後再輸入dir確認是否到正確路徑 範例10-4 輸入dotnet tool install --global dotnet-ef在全域安裝EFCore CLI工具(如果已經安裝,會出現下圖訊息,即可忽略此步驟) 範例10-5 輸入dotnet ef migrations add CreateInitial初始化SQLite 範例10-6 輸入dotnet ef database update更新SQLite資料表 範例10-7 成功就會自動產生Migrations資料夾 範例10-8

編輯WeatherForecastController.cs類別檔

將EFCoreContext注入WeatherForecastController.cs 步驟11-1

  • 將預設的API註解

步驟11-2

  • 寫新的對外API
    //
    [HttpGet("InsertAsync")]
    public async Task<IActionResult> InsertAsync() {
      //新增一筆資料
      var data = new Student() { Name = "BillHuang", Age = 20 };
      //加到Students這張table內
      _context.Students.Add(data);
      //執行,並回傳成功數量
      return Ok(await _context.SaveChangesAsync());
    }

範例11-3

執行結果

F5執行後,依照下列步驟操作,並確認結果 範例12-1 範例12-2 範例12-3

參考

efcore影片介紹 余小章 @ 大內殿堂

範例檔

GitHub