shuhelohelo’s blog

Xamarin.Forms多めです.

ASP.NET CoreでIdentityUser、IdentityRoleにカラムを追加する。

環境

ASP.NET Coreでユーザー認証、認可にIdentityを使用する場合、元から用意されているIdentityUserIdentityRoleなどにプロパティ(DB上のカラム)を追加したい場合がある。

ここでは、IdentityUserEmployeeIdプロパティを追加する場合を例として説明する。

1. IdentityUserIdentityRoleを継承したクラスを作る

    public class HogeUser : IdentityUser
    {
    }

2. HogeUserEmployeeIdプロパティを追加する

    public class HogeUser : IdentityUser
    {
        public string EmployeeId { get; set; }
    }

3. DbContextに変更を加える

DBの操作を行うためにIdentityDbContextクラスを継承した〇〇DbContextというクラスがおそらくあるはず。 ここで、新しく作成したクラス(HogeUser)を使うように指定する必要がある。

そうしないと、マイグレーション時にDBにカラムが追加されない。

    public class AppUserDbContext : IdentityDbContext<HogeUser>
    {
        ....
    }

IdentityRoleも変える場合、例えばIdentityRoleを継承したHogeRoleを使う場合

    public class AppUserDbContext : IdentityDbContext<HogeUser, HogeRole, string>
    {
        ....
    }

このIdentityDbContextの3つの方引数のうち,最後のstringは何なのか,なぜ必要なのか.

これはIdentityRoleのTKeyとして使用される.

TKeyはIdentityRoleのIdの型として使用される.

今回,IdentityRoleのIdがstring型だったため,ここでstringを使用している.

4. DBへの反映

あとはいつものマイグレーションの操作を行えば、DB上のそれぞれのテーブルにカラムが追加される。