मैं विजुअल स्टूडियो 2013 के रिलीज़ संस्करण (RTM, RC नहीं) (MSDN 2013-10-18 से डाउनलोड किया गया) और इसलिए AspNet.Identity का नवीनतम (RTM) संस्करण उपयोग कर रहा हूँ। जब मैं एक नया वेब प्रोजेक्ट बनाता हूं, तो मैं प्रमाणीकरण के लिए "व्यक्तिगत उपयोगकर्ता खाते" का चयन करता हूं। यह निम्न तालिकाएँ बनाता है:
- AspNetRoles
- AspNetUserClaims
- AspNetUserLogins
- AspNetUserRoles
- AspNetUsers
जब मैं एक नया उपयोगकर्ता पंजीकृत करता हूं (डिफ़ॉल्ट टेम्प्लेट का उपयोग करके), इन तालिकाओं (ऊपर सूचीबद्ध) बनाई जाती हैं और AspNetUsers तालिका में एक रिकॉर्ड डाला जाता है जिसमें शामिल होता है:
- ईद
- उपयोगकर्ता नाम
- PasswordHash
- SecurityStamp
- discriminator
इसके अतिरिक्त, सार्वजनिक गुणों को वर्ग "ApplicationUser" में जोड़कर मैंने AspNetUser तालिका में अतिरिक्त फ़ील्ड सफलतापूर्वक जोड़े हैं, जैसे "FirstName", "LastName", "PhoneNumber", आदि।
यहाँ मेरा सवाल है। क्या उपरोक्त तालिकाओं के नाम बदलने का एक तरीका है (जब वे पहली बार बनाए गए हैं) या क्या उन्हें हमेशा AspNet
उपसर्ग के साथ नामित किया जाएगा जैसा कि ऊपर सूचीबद्ध किया गया है? यदि तालिका के नाम अलग-अलग नाम दिए जा सकते हैं, तो कृपया बताएं कि कैसे।
-- अपडेट करें --
मैंने @ हाउ कुंग का समाधान लागू किया। यह एक नई तालिका बनाता है (उदाहरण के लिए मैंने इसे MyUsers कहा है), लेकिन यह अभी भी AspNetUsers तालिका बनाता है। लक्ष्य "AspNetUsers" तालिका को "MyUser" तालिका से बदलना है। नीचे दिए गए कोड और बनाई गई तालिकाओं की डेटाबेस छवि देखें।
मैं वास्तव में प्रत्येक AspNet
तालिका को अपने नाम से बदलना चाहूंगा ... For fxample, MyRoles, MyUserClaims, MyUserLogins, MyUserRoles और MyUser।
मैं इसे कैसे पूरा करूं और केवल एक सेट टेबल के साथ समाप्त करूं?
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");
}
}
- अद्यतन उत्तर -
हाओ कुंग और पीटर स्टुलिंस्की दोनों के लिए धन्यवाद। इससे मेरी समस्या हल हो गई ...
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 द्वारा बताई गई लाइन को हटाने के लिए अपना जवाब अपडेट करना चाहिए । अन्यथा, नई नामित MyUsers
तालिका में @Daskul बताया गया है कि एक विभेदक स्तंभ है। इसके अलावा, आपकी MyUserClaims
तालिका संरचना गलत होगी क्योंकि @Matt ओवरऑल बताया गया है। मुझे लगता है कि जोड़ने के लिए विचार एक टिप्पणी से @ msiang एक msdn ब्लॉग में आया था , लेकिन यह गलत है!