說明EFCore基本語法,EFCore的基礎為Linq,所以使用上與Linq邏輯一模一樣,只是語法有些微差異。
同步更新於個人部落格
EFCore語法說明
選擇ASP.NET Core Web API專案範本,並執行下一步
命名你的專案名稱,並選擇專案要存放的位置。
直接進行下一步
新增Models資料夾,並在裡面新增Student.cs類別檔
public class Student {
public int Id { get; set; }
public string Name { get; set; } = "BillHuang";
public int Age { get; set; }
}
新增DBContext資料夾,並在裡面新增EFCoreContext.cs類別檔
//別忘了using
using Microsoft.EntityFrameworkCore;
using EFCoreExample_Advanced.Models;
namespace EFCoreExample_Advanced.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; }
}
}
//別忘了using
using EFCoreExample_Advanced.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>();
//下面省略
檢視>其他視窗>套件管理器主控台
下方會出現命令列
輸入dir
會顯示目錄檔案及子目錄清單
輸入cd EFCoreExample_Advanced
移動到專案檔底下後再輸入dir
確認是否到正確路徑
輸入dotnet tool install --global dotnet-ef
在全域安裝EFCore CLI工具(如果已經安裝,會出現下圖訊息,即可忽略此步驟)
輸入dotnet ef migrations add CreateInitial
初始化SQLite
輸入dotnet ef database update
更新SQLite資料表
成功就會自動產生Migrations資料夾
[HttpGet("QueryAsync")]
public async Task<IActionResult> QueryAsync() {
//透過ToListAsync方法就可以將Students所有資料取出
var Result = await _context.Students.ToListAsync();
return Ok(Result);
}
[HttpGet("QueryFirstOrDefaultAsync")]
public async Task<IActionResult> QueryFirstOrDefaultAsync() {
//取得第一筆
var Result = await _context.Students.FirstOrDefaultAsync();
return Ok(Result);
}
[HttpGet("TransactionsAsync")]
public async Task<IActionResult> TransactionsAsync() {
//開始資料庫交易
using var trans = _context.Database.BeginTransaction();
//建立一筆資料
var data = new Student() { Name = "BillHuang", Age = 20 };
//新增到Students資料表中
_context.Students.Add(data);
//執行,此步驟還不會真的異動到資料
await _context.SaveChangesAsync();
//取得第一筆資料
var Result = await _context.Students.FirstOrDefaultAsync();
//當執行了Commit後才會將上面的異動存到資料庫
trans.Commit();
return Ok(Result);
}