簡體   English   中英

ASP.net標識自定義用戶模型未被角色,聲明和登錄表使用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM