前提
Visual Studio 2022を使用。
パッケージのインストール
「プロジェクト>NuGetパッケージの管理」を開き、以下のパッケージを検索し、インストールする。
共通
- Microsoft.EntityFrameworkCore
- Microsoft.EntityFrameworkCore.Design
- Microsoft.EntityFrameworkCore.Tools
- Microsoft.VisualStudio.Web.CodeGeneration
MySQL用
- Microsoft.EntityFrameworkCore.Relational
- omelo.EntityFrameworkCore.MySql
DB接続情報を追加
appsettings.json にDB接続情報を追加する。
以下はlocalhostのtestデータベースに接続をするサンプル。
"ConnectionStrings": {
"DefaultConnection": "server=localhost;database=test;userid=test;password=testtest"
},
DbContextを設定
DbContextクラスを継承し、アプリケーション用のDbContextを作成する。
例として、Sampleモデルを追加してある。
モデルが増えたら、同様にここへ追加していく。
using Test.Models;
using Microsoft.EntityFrameworkCore;
namespace Test.Data
{
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }
public DbSet<Sample> Samples { get; set; }
}
}
Program.csを設定
Program.csにDB接続処理を追加する。
string? connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
builder.Services.AddDbContext<AppDbContext>(options =>
options.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString)));
これでそれぞれの画面において、以下のように依存性の注入をすることで、DBの操作が可能となる。
@inject AppDbContext _context
マイグレーションとアップデート
モデルを作成したら、以下コマンドを「パッケージマネージャーコンソール」で実行することで、テーブルを作成することができる。
Identifyの部分は任意の文字列ならなんでもよい。
Add-Migration Identify
Update-Database
モデルを変更した場合は、Identifyの部分を変更して、再度実行すると差分更新してくれる。
ただし、大幅な変更を行った場合はうまくいかないこともあるので、その場合はテーブルをすべて削除し、Migrationsフォルダの中もすべて削除してから、再度実行する。