iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0

目的

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

同步更新於個人部落格
EFCore範例

1.建立新專案

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

2.設定新的專案

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

3.其他資訊

直接進行下一步
步驟3

4.NuGet加入套件

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

步驟4

5.新增Student.cs類別檔

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

6.編輯Student.cs類別檔

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

範例6-1

7.新增EFCoreContext.cs類別檔

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

8.編輯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

9.編輯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

10.到套件管理器主控台下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

11.編輯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

12.執行結果

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

參考

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

範例檔

GitHub


上一篇
[.net 6] Dapper語法說明
下一篇
[.net 6] EFCore語法說明
系列文
.net6套件入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言