Asp.net-core-identity-migrations

提供:Dev Guides
移動先:案内検索

ASP.NET Core-アイデンティティの移行

この章では、IDの移行について説明します。 ASP.NET Core MVCでは、認証およびID機能はStartup.csファイルで構成されます。

public void ConfigureServices(IServiceCollection services) {
   services.AddMvc();
      services.AddEntityFramework()
      .AddSqlServer()
      .AddDbContext<FirstAppDemoDbContext>option.
      UseSqlServer(Configuration["database:connection"]));

   services.AddIdentity<User, IdentityRole>()
      .AddEntityFrameworkStores<FirstAppDemoDbContext>();
}

エンティティクラスの1つを変更するとき、またはDBContext派生クラスを変更するときはいつでも、データベースに適用する新しい移行スクリプトを作成し、コード内のスキーマと同期させる必要があります。

これがアプリケーションの場合です。FirstAppDemoDbContextクラスをIdentityDbContextクラスから派生させ、独自のDbSetを含み、管理するエンティティに関するすべての情報を格納するスキーマも作成するためです。

using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.Data.Entity;

namespace FirstAppDemo.Models {
   public class FirstAppDemoDbContext : IdentityDbContext<User> {
      public DbSet<Employee> Employees { get; set; }

      protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
         optionsBuilder.UseSqlServer("Data Source = (localdb)\\MSSQLLocalDB;
            Initial Catalog = FirstAppDemo;Integrated Security = True;
            Connect Timeout = 30;Encrypt = False;
            TrustServerCertificate = True;ApplicationIntent = ReadWrite;
            MultiSubnetFailover = False");
      }
   }
}

コマンドプロンプトを開いて、プロジェクトのproject.jsonファイルが存在する場所にいることを確認します。

コマンドプロンプト

*dnx ef* と入力して、Entity Frameworkコマンドを取得することもできます。

Dnx Ef

project.jsonファイルには、この「ef」キーワードをEntityFramework.Commandsにマップするセクションがあります。

"commands": {
   "web": "Microsoft.AspNet.Server.Kestrel",
   "ef": "EntityFramework.Commands"
}

ここから移行を追加できます。 また、移行に名前を付ける必要があります。 バージョン2にv2を使用してEnterキーを押してみましょう。

V2 For Version

移行が完了すると、移行フォルダーにv2ファイルが作成されます。

V2ファイル

ここで、*“ dnx ef database update” *コマンドを実行して、その移行をデータベースに適用します。

データベース更新

Entity Frameworkは、適用する必要がある移行があることを確認し、その移行を実行します。

SQL Serverオブジェクトエクスプローラーを開くと、前に作成したEmployeeテーブルが表示されます。 また、ユーザー、クレーム、ロールを保存する必要がある追加のテーブル、およびユーザーを特定のロールにマッピングするマッピングテーブルも表示されます。

追加テーブル

これらの表はすべて、Identityフレームワークが提供するエンティティに関連しています。

  • usersテーブル*を簡単に見てみましょう。

ユーザーテーブル

AspNetUsersテーブルの列には、継承元のアイデンティティユーザーで見たすべてのプロパティと、UserNameやPasswordHashなどのフィールドを格納する列が含まれていることがわかります。 そのため、ユーザーを作成し、ユーザーのパスワードを検証する機能も含まれているため、組み込みのIdentityサービスの一部を使用しています。