আমি ভিজ্যুয়াল স্টুডিও 2013 এর রিলিজ সংস্করণ (আরটিএম, আরসি নয়) ব্যবহার করছি (এমএসডিএন 2013-10-18 থেকে ডাউনলোড হয়েছে) এবং সুতরাং এসপনেট.আইডেন্টিটির সর্বশেষ (আরটিএম) সংস্করণ। আমি যখন একটি নতুন ওয়েব প্রকল্প তৈরি করি, আমি প্রমাণীকরণের জন্য "স্বতন্ত্র ব্যবহারকারী অ্যাকাউন্টগুলি" নির্বাচন করি। এটি নিম্নলিখিত সারণীগুলি তৈরি করে:
- AspNetRoles
- AspNetUserClaims
- AspNetUserLogins
- AspNetUserRoles
- AspNetUsers
আমি যখন কোনও নতুন ব্যবহারকারীর নিবন্ধকরণ করি (ডিফল্ট টেম্পলেট ব্যবহার করে), এই সারণীগুলি (উপরে তালিকাভুক্ত) তৈরি করা হয় এবং অ্যাস্পনেট ব্যবহারকারীদের সারণিতে একটি রেকর্ড inোকানো থাকে:
- আইডি
- ব্যবহারকারীর নাম
- PasswordHash
- SecurityStamp
- Discriminator
অতিরিক্ত হিসাবে, "অ্যাপ্লিকেশন ব্যবহারকারী" শ্রেণিতে সর্বজনীন বৈশিষ্ট্য যুক্ত করে আমি সফলভাবে "ফার্স্টনাম", "লাস্টনাম", "ফোন নাম্বার" ইত্যাদির মতো এসপনেট ব্যবহারকারীদের টেবিলে অতিরিক্ত ক্ষেত্র যুক্ত করেছি added
আমার প্রশ্ন এখানে। উপরের টেবিলগুলির নাম পরিবর্তন করার কোনও উপায় আছে (যখন তারা প্রথম তৈরি করা হবে) বা AspNet
আমি উপরে উল্লিখিত হিসাবে সেগুলি কি সর্বদা উপসর্গের সাথে নাম দেওয়া হবে ? যদি টেবিলের নামগুলি আলাদাভাবে নামকরণ করা যায় তবে দয়া করে কীভাবে তা ব্যাখ্যা করুন।
-- হালনাগাদ --
আমি @ হাও কুং এর সমাধানটি প্রয়োগ করেছি। এটি একটি নতুন সারণী তৈরি করে (উদাহরণস্বরূপ আমি এটিকে মাই ইউজার বলেছি), তবে এটি এখনও অ্যাসনেট ব্যবহারকারীদের সারণী তৈরি করে। লক্ষ্যটি হ'ল "অ্যাস্পনেট ব্যবহারকারীরা" সারণিকে "মাই ইউজারস" সারণীর সাথে প্রতিস্থাপন করা। নীচে কোড এবং তৈরি টেবিলের ডাটাবেস চিত্র দেখুন।
আমি প্রকৃতপক্ষে প্রতিটি AspNet
টেবিলটি নিজের নামের সাথে প্রতিস্থাপন করতে চাই ... fxample, MyRoles, MyUserClaims, MyUserLogins, MyUserRoles এবং মাই ব্যবহারকারীদের জন্য।
আমি কীভাবে এটি সম্পাদন করব এবং কেবলমাত্র এক টেবিলের সেট দিয়ে শেষ করব?
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");
দ্বারা উল্লিখিত লাইনটি সরাতে । অন্যথায়, নতুন নামযুক্ত MyUsers
টেবিলটিতে @ দাসকুল নির্দেশিত হিসাবে বৈষম্যমূলক কলাম রয়েছে। এছাড়াও, আপনার MyUserClaims
টেবিলের কাঠামোটি ভুল হবে ভুলভাবে @ ম্যাট সামগ্রিকভাবে নির্দেশিত হিসাবে। আমি মনে করি এটি যুক্ত করার ধারণাটি একটি এমএসডিএন ব্লগে @ জিয়াংয়ের একটি মন্তব্য থেকে এসেছে , তবে এটি ভুল!