Visual Studio 2013'ün (MSDN 2013-10-18'den indirilen) yayın sürümünü (RTM, RC değil) ve bu nedenle AspNet.Identity'nin en son (RTM) sürümünü kullanıyorum. Yeni bir web projesi oluşturduğumda, kimlik doğrulama için "Bireysel Kullanıcı Hesapları" nı seçiyorum. Bu, aşağıdaki tabloları oluşturur:
- AspNetRoles
- AspNetUserClaims
- AspNetUserLogins
- AspNetUserRoles
- AspNetUsers
Yeni bir kullanıcı kaydettiğimde (varsayılan şablonu kullanarak), bu tablolar (yukarıda listelenmiştir) oluşturulur ve AspNetUsers tablosunda aşağıdakileri içeren bir kayıt bulunur:
- İD
- Kullanıcı adı
- PasswordHash
- SecurityStamp
- diskriminatörüyle
Ayrıca, "ApplicationUser" sınıfına ortak özellikler ekleyerek başarıyla "FirstName", "LastName", "PhoneNumber" gibi AspNetUsers tabloya ek alanlar ekledim.
İşte sorum. Yukarıdaki tabloların adlarını değiştirmenin bir yolu var mı (ilk oluşturulduğunda) veya her zaman AspNet
yukarıda listelediğim gibi önekle adlandırılacak mı? Tablo adları farklı adlandırılabilirse, lütfen nasıl yapılacağını açıklayın.
-- GÜNCELLEME --
@Hao Kung'un çözümünü uyguladım. Yeni bir tablo oluşturur (örneğin buna MyUsers adını verdim), ancak yine de AspNetUsers tablosunu oluşturur. Amaç "AspNetUsers" tablosunu "MyUsers" tablosuyla değiştirmektir. Aşağıdaki koda ve oluşturulan tabloların veritabanı görüntüsüne bakın.
Aslında her AspNet
tabloyu kendi adımla değiştirmek istiyorum ... fxample, MyRoles, MyUserClaims, MyUserLogins, MyUserRoles ve MyUsers için.
Bunu nasıl başarabilirim ve yalnızca bir tablo kümesiyle sonuçlanabilirim?
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");
}
}
- CEVAP GÜNCELLEME -
Hem Hao Kung hem de Peter Stulinski'ye teşekkürler. Bu benim sorunumu çözdü ...
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");
@Sergey tarafından belirtilen satırı kaldırmak için cevabınızı güncellemelisiniz . Aksi takdirde, yeni adlandırılan MyUsers
tabloda @Daskul'un işaret ettiği gibi bir ayırıcı sütun bulunur. Ayrıca, MyUserClaims
@Matt Overall'ın işaret ettiği gibi tablo yapınız yanlış olacaktır. Ben ekleme fikri bir msdn blogunda @Giang bir yorum geldi , ama onun yanlış!