SORU
18 EKİM 2013, Cuma


Visual Studio 2013 AspNet Kimlik kullanırken tablo isimlerini değiştirebilir miyim?

Sürüm Sürüm (RTM, RC Visual Studio 2013 (MSDN 10/18/2013 indirilen) ve AspNet (RTM) son sürümünü bu nedenle kullanıyorum.Kimlik. Yeni bir proje oluşturduğumda, "" kimlik doğrulaması için. tek Tek Kullanıcı Hesaplarını seçin Bu Aşağıdaki tablo oluşturur:

  1. AspNetRoles
  2. AspNetUserClaims
  3. AspNetUserLogins
  4. AspNetUserRoles
  5. AspNetUsers

Yeni bir kullanıcı (varsayılan şablon kullanarak) kaydolduktan sonra, bu tablolar (yukarıda listelenen) oluşturulur ve AspNetUsers tablo kayıtlarını içerir: hangi ekledi

  1. Id
  2. Kullanıcı adı
  3. PasswordHash
  4. SecurityStamp
  5. Elde edilir

Ayrıca, bu sınıf için ortak özellikler ekleyerek "" başarıyla AspNetUsers tablo için ilave alanları ekledim, "gibi","","", vb. PhoneNumber Soyad Ad ApplicationUser

Benim de bir sorum var. Yukarıdaki tablo ilk oluşturulduğunda () isimlerini değiştirmek için bir yolu yoktur ya da her zaman yukarıda listelenen AspNet öneki adlı olacaklar mı? Eğer tablo isimleri farklı adlandırılmış olabilir, lütfen açıklar mısın? Teşekkür ederim.

-- GÜNCELLEME --

@Hao Kung çözüm uygulanmaktadır. Yeni bir tablo (örneğin MyUsers aradım) oluşturur ama aynı zamanda hala AspNetUsers tablo oluşturur. Amaç" "" tablo. MyUsers ile masa "AspNetUsers değiştirmek için. Ve tablo oluşturulan veritabanı görüntü aşağıdaki kodu bakın.

Aslında Örneğin kendi adı ile her AspNet tablo değiştir şunu söylemek istiyorum: MyRoles, MyUserClaims, MyUserLogins, MyUserRoles, MyUsers.

Bunu gerçekleştirmek ve tabloları yalnızca bir dizi ile sonuna kadar nasıl herhangi bir fikir?

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");
    }
}

Database Tables

-- GÜNCELLEME -- CEVAP

Hao Kung ve Peter hem teşekkürler Stulinski. Bu benim sorunum çözüldü...

    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");
    }

CEVAP
24 EKİM 2013, PERŞEMBE


Bu kolayca İdentityModel değiştirerek bunu yapabilirsiniz.aşağıda: cs olarak başına

Senin DbContext sonra aşağıdaki ekleyin OnModelCreating geçersiz kılmak için, bu AspNetUser tablo değişecek "Kullanıcılar ayrıca alan adları varsayılan Kimlik sütunu değiştirebilirsiniz" User_İd olacak.

modelBuilder.Entity<IdentityUser>()
                    .ToTable("Users", "dbo").Property(p => p.Id).HasColumnName("User_Id");

ya da sadece aşağıdaki tüm standart sütun adları tutmak istiyorsanız:

modelBuilder.Entity<IdentityUser>()
                        .ToTable("Users", "dbo")

(Bu İdentityModel olmalıdır.aşağıda tam örnek cs dosyası) ben ApplicationUser Dersim Kullanıcı adı olarak değiştirildi.

public class User : IdentityUser
    {
        public string PasswordOld { get; set; }
        public DateTime DateCreated { get; set; }

        public bool Activated { get; set; }

        public bool UserRole { get; set; }

    }

public class ApplicationDbContext : IdentityDbContext<User>
    {
        public ApplicationDbContext()
            : base("DefaultConnection")
        {
        }

        protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Entity<IdentityUser>()
                .ToTable("Users", "dbo").Property(p => p.Id).HasColumnName("User_Id");
            modelBuilder.Entity<User>()
                .ToTable("Users", "dbo").Property(p => p.Id).HasColumnName("User_Id");
        }
    }

Lütfen geçerli bir tablo varsa bunu çalıştırmayı başardım not. Sen ne pahasına olursa olsun da Not Varsayılan olanları oluşturulur göster.

Bu yardımcı olur umarım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Helen Bradley

    Helen Bradle

    4 Mart 2008
  • Matthew Smith

    Matthew Smit

    24 Mayıs 2010
  • Modus Recordings

    Modus Record

    26 Kasım 2008