如何删除 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; }
在我的 .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; }