1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ASP.NET Core 5.0 の Identity をPostgreSQLで利用する

Last updated at Posted at 2021-02-25

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が作成されたのでユーザー登録できる。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?