[英]ASP.net Identity custom user model not being used by roles, claims and login table
我正在使用這樣的自定義用戶模型:
public class ApplicationUser : IdentityUser
{
public string Firstname { get; set; }
...
}
Identity系統創建的其余表有點不同步。 創建一個名為ApplicationUser_Id的新列,該列在外鍵處設置,但仍有一個UserId用於復合主鍵。
ApplicationUser模型的配置是
public class ApplicationUserConfiguration : EntityTypeConfiguration<ApplicationUser>
{
public ApplicationUserConfiguration()
{
this.ToTable("AspNetUsers");
this.Property(u => u.Firstname).IsRequired().HasMaxLength(100);
this.Property(u => u.Lastname).IsRequired().HasMaxLength(100);
}
}
如何告訴EF繼續使用UserId作為外鍵並擺脫ApplicationUser_Id?
謝謝
更新:按照預期工作,直到我為ApplicationUser添加自定義配置。
DataContext.cs
modelBuilder.Configurations.Add(new ApplicationUserConfiguration());
ApplicationUserConfiguration.cs
public class ApplicationUserConfiguration : EntityTypeConfiguration<ApplicationUser>
{
public ApplicationUserConfiguration()
{
this.ToTable("AspNetUsers");
this.Property(u => u.Firstname).IsRequired().HasMaxLength(100);
this.Property(u => u.Lastname).IsRequired().HasMaxLength(100);
}
}
我確實重現了這個問題然后通過添加modelBuilder.Configurations.Add(new ApplicationUserConfiguration())修復了它; 在base.OnModelCreating(modelBuilder)之前; 所以功能現在
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new ApplicationUserConfiguration());
base.OnModelCreating(modelBuilder);
}
您正在覆蓋約定,因此您需要手動映射表。 像這樣的東西:
modelBuilder.Entity<AspNetUserClaims>()
.HasRequired(t => t.UserId)
.WithOptional(t => t.Claims);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.