0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BlazorでMySQLを使用するための初期セットアップ

Last updated at Posted at 2024-09-28

前提

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フォルダの中もすべて削除してから、再度実行する。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?