Yıllardır ASP.net üyeliğini kullandım ve ASP.net kimliğini denemeye başladım. Sadece sürüm 2.0'ı piyasaya sürdüler ve bunun int
birincil anahtarını desteklemesi gerekiyordu.Int.net sütunlarıyla ASP.net Identity 2.0 için tablo adları nasıl değiştirilir?
public class User : IdentityUser<int, UserLogin, UserRole, UserClaim>
{
}
public class UserLogin : IdentityUserLogin<int>
{
}
public class Role : IdentityRole<int, UserRole>
{
public string Description { get; set; } // Custom description field on roles
}
public class UserRole : IdentityUserRole<int>
{
}
public class UserClaim : IdentityUserClaim<int>
{
}
public class MyDbContext : IdentityDbContext<User, Role, int, UserLogin, UserRole, UserClaim>
{
public MyDbContext() : this("MyDB") { }
public MyDbContext(string connStringName) : base(connStringName)
{
this.Configuration.LazyLoadingEnabled = false;
this.Configuration.ProxyCreationEnabled = false;
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().ToTable("Users");
modelBuilder.Entity<Role>().ToTable("Roles");
modelBuilder.Entity<UserRole>().ToTable("UserRoles");
modelBuilder.Entity<UserLogin>().ToTable("UserLogins");
modelBuilder.Entity<UserClaim>().ToTable("UserClaims");
base.OnModelCreating(modelBuilder);
}
}
Bir veritabanı oluşturup taşıma, düzgün kimlik tablolarının her biri için bir tamsayı kimliği sütun oluşturur, ancak, bunu: tamsayı birincil anahtar destek almak için aşağıdaki gibi benim özel kimlik sınıfları tanımladığınız OnModelCreating
yönteminde belirtilen özel tablo adlarını görmezden geliyor. Bunun yerine, dbo.AspNetUsers
ve dbo.AspNetRoles
gibi tablo adlarını alıyorum.
Özel kimlik sınıflarıma [Table("TableName")]
eklemeyi de denedim ve hiçbir etkisi yok. Ancak
modelBuilder.Entity<User>().ToTable("Users");
modelBuilder.Entity<IdentityUser<int, IdentityUserLogin<int>, IdentityUserRole<int>, IdentityUserClaim<int>>>().ToTable("Users");
modelBuilder.Entity<Role>().ToTable("Roles");
modelBuilder.Entity<IdentityRole<int, UserRole>>().ToTable("Roles");
modelBuilder.Entity<UserRole>().ToTable("UserRoles");
modelBuilder.Entity<IdentityUserRole<int>>().ToTable("UserRoles");
modelBuilder.Entity<UserLogin>().ToTable("UserLogins");
modelBuilder.Entity<IdentityUserLogin<int>>().ToTable("UserLogins");
modelBuilder.Entity<UserClaim>().ToTable("UserClaims");
modelBuilder.Entity<IdentityUserClaim<int>>().ToTable("UserClaims");
, ben çeşitli varyasyonlar denedim ve benim göçler üretmek olmaz: bunlar temel Kimlik sınıfları kullanarak modelBuilder.Entry<Type>().ToTable("TableName")
çizgilerin her tekrarlanan gibi ASP.net Kimlik 1.0 örneklere baktığımızda
, görünüyordu . benzeri hatalar almaya devam ettim: Microsoft.AspNet.Identity.EntityFramework.IdentityUser'4 [System.Int32, Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin'1 [System.Int32], Microsoft.AspNet.Identity.EntityFramework. IdentityUserRole'1 [System.Int32], Microsoft.AspNet.Identity.EntityFramework.IdentityUserClaim'1 [System.Int32]] 'eşlenmedi. Yoksay yöntemini veya NotMappedAttribute veri notunu kullanarak türün açık bir şekilde hariç tutulmadığını kontrol edin. Türün sınıf olarak tanımlandığını, ilkel veya genel olmadığını ve EntityObject öğesinden devralmadığını doğrulayın.
ASP.NET Kimlik 2.0'da tamsayı birincil anahtarlarıyla özel tablo adlarını nasıl oluşturabilirim?
listelenen isimler 3.0 diş hekimliği, [check out this q/a] (http://stackoverflow.com/questions/34523066/how-can-i-change-the-table-names-used-by-asp-net-identity-3- vnext). + 1'ler yaklaşık – Terminus