ASP.NET Core 5.0でIdentityを利用するとSqliteが使用されてしまう。
$ donet new react -o MyApp --au Individual
PostgreSQLを使用するように変更するには次のようにする。
$ dotnet remove package Microsoft.EntityFrameworkCore.Sqlite
$ dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
app.db は不要なので削除しておく。
$ rm app.db
PostgreSQLのデータベースを作成する
$ createdb -O webi -E utf-8 -l C --template template0 my_app_db
appsetting.json を編集して DefaultConnection を変更する。
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Database=my_app_db;Username=ユーザーー;Password=パスワード"
},
Startup.cs を編集して Sqliteの代わりにPostgreSQLを使用するように変更する。
services.AddDbContext<ApplicationDbContext>(options =>
options.UseNpgsql(
Configuration.GetConnectionString("DefaultConnection")));
データベースのマイグレーションを実行する。
$ dotnet ef database update
このまま起動してユーザー登録を行うと次のようなエラーとなる。
PostgresException: 42804: column "EmailConfirmed" is of type integer but expression is of type boolean
これはデータベースのMigrationがSqlite用に作成されているためである。
データベースのMigrationをPostgreSQL用に作り直す必要がある。
$ dotnet ef database update 0
$ dotnet ef migrations remove
$ dotnet ef migrations add CreateIdentitySchema
$ dotnet ef database update
これでPostgreSQL用にMigrationが作成されたのでユーザー登録できる。