Blazor プロジェクトの新規作成
- Visual Studio 2022を開いて
- プロジェクトの新規作成を押下
- Blazorのウエブアプリテンプレートを選択
- 「次」を押下
- プロジェクト名を入力
- 「次」を押下
- 「認証タイプ」のドロップダウンで個人アカウントを選択
- 「作成」を押下
PostgreSQLの設定
デフォールトの設定でSQLServerのデータベースの設定されていますので変更しないといけません。
PostgreSQLのパッケージのインストール
- ソリューションを右クリック
- 右クリックすると表示されるコンテキストメニューで Manage NuGet Packages for Solution... を選択
- NuGet - Solution ペインの Browse タブを選択
- 検索ボックスで npgsql を入力
- 左側にあるパッケージ一覧で Npgsql.EntityFrameworkCore.PostgreSQL を選択
- 左側に表示されるパッケージ詳細で「プロジェクト」のチェックボックスを選択
- 現れた「インストール」ボタンを押下
- 表示された変更プレビューのダイアログの「適用する」ボタンを押下
接続設定
{
"ConnectionStrings": {
"DefaultConnection": "Host=xxx.xxx.xxx.xxx;Port=5432;Database=testdb;Username=testdb;Password=testdb"
},
...
SQLServerの代わりにPostgreSQLを入れ替える
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseNpgsql(connectionString));
PostgreSQLのデータベース作成
- SSHでホストにログイン
- 下記のように psql でデータベースとDBユーザーを作成:
$ psql -U postgres
Password for user postgres:
psql (12.11)
Type "help" for help.
postgres=# create database testdb;
CREATE DATABASE
postgres=# create user testdb with password 'testdb';
CREATE ROLE
postgres=# alter user testdb with encrypted password 'testdb';
ALTER ROLE
postgres=# grant all privileges on database testdb to testdb;
GRANT
postgres=#
Microsoft.EntityFrameworkCoreの設定
- ソリューションを右クリック
- 右クリックすると表示されるコンテキストメニューで Manage NuGet Packages for Solution... を選択
- NuGet - Solution ペインの Browse タブを選択
- 検索ボックスで npgsql を入力
- 左側にあるパッケージ一覧で Npgsql.EntityFrameworkCore.PostgreSQL を選択
- 左側に表示されるパッケージ詳細で「プロジェクト」のチェックボックスを選択
- 現れた「インストール」ボタンを押下
- 表示された変更プレビューのダイアログの「適用する」ボタンを押下
- 表示されたライセンス受諾のダイアログの「同意する」ボタンを押下
マイグレーション
デフォールトのの設定でSQLServerのマイグレーションが生成されているのでPostgreSQLの設定が完了の後でPostgreSQLのマイグレーションを生成しないといけません。
既存のマイグレーション
新しいマイグレーションの生成
- プロジェクトのフォルダーにいる確認して、ソリューションフォルダーにいるなら次のコマンドを実行する:
cd PostgreSQLLocalAuth
- 「Package Manager Console」で次のコマンドを実行して新しいマイグレーションを生成します:
Add-Migration Initial-Create -OutputDir Data\Migrations
DBでマイグレーションを実行
- 「Package Manager Console」で次のコマンドを実行してデータベースでマイグレーションを実行します:
Update-Database
※ PostgreSQLのバージョンが古すぎるとき下記のエラーが発生:
42601: syntax error at or near "GENERATED"
POSITION: 53
※ PostgreSQLのバージョンが古すぎるとき下記のエラーが発生
42P07: relation "AspNetRoles" already exist
動作確認
ユーザーを登録して、新しく作成したウェブアプリケーションにログインしましょう