Visual Studio 2013 (MSDN 2013-10-18 からダウンロード) のリリース バージョン (RC ではなく RTM) を使用しているため、AspNet.Identity の最新 (RTM) バージョンを使用しています。新しい Web プロジェクトを作成するとき、認証に「個々のユーザー アカウント」を選択します。これにより、次のテーブルが作成されます。
- AspNetRoles
- AspNetUserClaims
- AspNetUserLogins
- AspNetUserRoles
- AspNetUsers
(既定のテンプレートを使用して) 新しいユーザーを登録すると、これらのテーブル (上記のリスト) が作成され、AspNetUsers テーブルに以下を含むレコードが挿入されます。
- ID
- ユーザー名
- パスワードハッシュ
- セキュリティスタンプ
- 識別器
さらに、クラス「ApplicationUser」にパブリック プロパティを追加することで、「FirstName」、「LastName」、「PhoneNumber」などのフィールドを AspNetUsers テーブルに正常に追加できました。
これが私の質問です。上記のテーブルの名前を変更する方法はありますか (それらが最初に作成されたとき)、または上記のように常にAspNet
プレフィックスで名前が付けられますか? テーブル名に別の名前を付けることができる場合は、その方法を説明してください。
- アップデート -
@Hao Kung のソリューションを実装しました。新しいテーブルが作成されますが (たとえば、MyUsers と呼びます)、AspNetUsers テーブルも作成されます。目標は、「AspNetUsers」テーブルを「MyUsers」テーブルに置き換えることです。以下のコードと、作成されたテーブルのデータベース イメージを参照してください。
実際には、各AspNet
テーブルを自分の名前に置き換えたいと思います... fxample、MyRoles、MyUserClaims、MyUserLogins、MyUserRoles、および MyUsers の場合。
これを達成し、最終的に 1 セットのテーブルだけになるにはどうすればよいですか?
public class ApplicationUser : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string PostalCode { get; set; }
public string PhonePrimary { get; set; }
public string PhoneSecondary { get; set; }
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(): base("DefaultConnection")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<IdentityUser>().ToTable("MyUsers");
}
}
-- 回答を更新 --
Hao Kung と Peter Stulinski の両方に感謝します。これは私の問題を解決しました...
protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<IdentityUser>().ToTable("MyUsers").Property(p => p.Id).HasColumnName("UserId");
modelBuilder.Entity<ApplicationUser>().ToTable("MyUsers").Property(p => p.Id).HasColumnName("UserId");
modelBuilder.Entity<IdentityUserRole>().ToTable("MyUserRoles");
modelBuilder.Entity<IdentityUserLogin>().ToTable("MyUserLogins");
modelBuilder.Entity<IdentityUserClaim>().ToTable("MyUserClaims");
modelBuilder.Entity<IdentityRole>().ToTable("MyRoles");
}