データベースのユーザー情報テーブルの変更
次に、先ほど追加したプロファイル情報を永続化するため、データベースのユーザー情報テーブルにも対応する項目を追加します。手作業で項目を追加することもできますが、せっかくASP.NET IdentityがEntity Framework(以下EF)を使用していますので、EFの「マイグレーション機能」(*1)を使って対応してみましょう。
データベースに登録されたデータは残しつつ、構造を変更する機能です。マイグレーション機能を使うと、データ移行用のSQLスクリプトをツールで生成、実行することができます。
マイグレーション機能の有効化
EFのマイグレーション機能は、「NuGetパッケージマネージャーコンソール」からコマンドを実行して処理を行います。そのため、まずは以下のコマンドを実行してマイグレーション機能を有効にする必要があります。
Enable-Migrations
コマンドを実行すると、プロジェクト内にMigrationsフォルダーが作成され、マイグレーションに必要なコードが自動生成されます(図1)。
これらのコードはツールが実行するため、とりあえずはその中身を理解する必要はありません。
プロファイル情報追加用マイグレーションファイル生成
次に先ほど変更したApplicationUserクラスを元にマイグレーションを実行するためのファイルを生成します。そのために、次のコマンドを同じくパッケージマネージャーコンソールで実行します(図3)。
Add-Migration "Customize profile"
コマンドを実行すると、Migrationsフォルダーにプロファイル情報の追加を行うマイグレーションを実行するためのファイルが生成されます(図4)。Add-Migrationコマンドの引数"Customize profile"は、このファイルの名前、およびファイル内で定義されるマイグレーション用クラスの名前に使用されるため、分かりやすい名前を指定することをお勧めします。
マイグレーション実行
ここまででマイグレーションを行う準備が整いました。あとは、次のコマンドをパッケージマネージャーコンソールで実行すれば、マイグレーションが実行されます(図5)。
Update-Database
マイグレーションが成功すると、データベースのAspNetUsersテーブルに姓、名、誕生日の項目が追加されます(図5)。追加された項目のデータ型、Nullを許容など、ApplicationUserクラスに追加したプロパティに対応したものが選ばれていることが確認できます。