Visual Studio 2013(MSDN 2013-10-18からダウンロード)のリリースバージョン(RCではなくRTM)を使用しているため、AspNet.Identityの最新(RTM)バージョンを使用しています。新しいWebプロジェクトを作成するとき、認証に「個人ユーザーアカウント」を選択します。これにより、次のテーブルが作成されます。
- AspNetRoles
- AspNetUserClaims
- AspNetUserLogins
- AspNetUserRoles
- AspNetUsers
(デフォルトテンプレートを使用して)新しいユーザーを登録すると、これらのテーブル(上記のリスト)が作成され、AspNetUsersテーブルに次の内容を含むレコードが挿入されます。
- Id
- ユーザー名
- PasswordHash
- SecurityStamp
- 弁別者
さらに、パブリックプロパティをクラス "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");
}
modelBuilder.Entity<IdentityUser>().ToTable("MyUsers").Property(p => p.Id).HasColumnName("UserId");
によって言及されている行を削除する必要があります。それ以外の場合は、MyUsers
@ Daskulが指摘したように、新しく名前が付けられたテーブルに識別子列があります。また、MyUserClaims
@ Matt全体が指摘しているように、テーブル構造は間違っています。これを追加するアイデアは、msdnブログの@Giangへのコメントから来たと思いますが、間違っています!