如何删除 ASP.NET 身份中重复的 UserId 列

How to remove the duplication of UserId column in ASP.NET identity

在我的 .NET 项目中,我创建了一个 class“ApplicationUser”,它像这样继承自 IdentityUser

{
   public class ApplicationUser : IdentityUser
   {
       public ICollection<Task> Tasks { get; set; }
       public ICollection<Category> Categories { get; set; }
   }
} 

并像这样与“类别”class建立一对多关系:

namespace ToDo.Models
{
    public class Category
    {
        public int CategoryId { get; set; }
        [Required(ErrorMessage = "Category Name is required.")]
        public string CategoryName { get; set; }
        public string UserId { get; set; }
        public ICollection<Task> Tasks { get; set; }
        public ApplicationUser ApplicationUser { get; set; }
    }
}

但是当我创建一个新类别时,它会进入数据库,其中有两列用于 Id,第一列是 UserId,第二列是 ApplicationUserId,这不是我创建的,有人可以帮我吗? 提前致谢。 还有这是来自数据库的图像

按照惯例,EF 会将外键创建为“{NavigationProperty}Id”,因此 EF 将创建 ApplicationUserId 作为您的外键。它只是认为 UserId 是您为自己的目的添加到 class 的某个值。

您可以将 EF 配置为专门使用 UserId 作为 Fluent 中 ApplicationUser 的 FK API:

builder.Entity<Category>()
    .HasOne<ApplicationUser>(p => p.ApplicationUser)
    .WithMany()
    .HasForeignKey(p => p.UserId);

或使用注释:

[ForeignKey("UserId")]
public ApplicationUser ApplicationUser { get; set; }