在 asp.net mvc EF 中创建 2 个表之间的关系表

本文关键字:之间 关系 创建 net asp mvc EF | 更新日期: 2023-09-27 18:35:25

我创建了:

  • 自定义自定义成员资格提供程序
  • 自定义角色提供程序
  • 用户模型
  • 榜样

它正确地为我创建了 2 个自定义表。现在我想在用户和角色之间创建包含 2 列的表:角色 ID、用户 ID

我是否应该调整我的模型以教 EF 创建此关系表 (用户角色)?

用户型号:

 public class User
{
    [Key]
    public int UserId { get; set; }
    [Required]
    public Int32 CompanyId { get; set; }
    [Required]
    public String UserName { get; set; }
    public String Password { get; set; }
    public String PasswordSalt { get; set; }
    public String Email { get; set; }
    public Boolean IsApproved { get; set; }
    public Boolean IsLockedOut { get; set; }
    public DateTime CreateDate { get; set; }
    public DateTime LastLoginDate { get; set; }
    public DateTime LastPasswordChangedDate { get; set; }
    public DateTime LastLockoutDate { get; set; }
}

榜样:

public class Role
{
    [Key]
    public int RoleId { get; set; }
    [Required]
    [MaxLength(20)]
    public string Name { get; set; }
    public ICollection<string> AssignedUsers { get; set; }
}

在 asp.net mvc EF 中创建 2 个表之间的关系表

如果使用代码优先 EF,则只需将用户集合添加到角色类,反之亦然。EF 将此双向链接作为在基础数据存储中创建多对多关系的信号。总而言之,您的课程将像这样增强......

public class User
{
  ...
  List<Role> Roles {get; set;}
}
public class Role
{
  ...
  List<User> Users {get; set;}
}
public class Role
{
    [Key]
    public int RoleId { get; set; }
    [Required]
    [MaxLength(20)]
    public string Name { get; set; }
    public ICollection<User> AssignedUsers { get; set; }
}

 public class User
{
    [Key]
    public int UserId { get; set; }
    [Required]
    public Int32 CompanyId { get; set; }
    [Required]
    public String UserName { get; set; }
    public String Password { get; set; }
    public String PasswordSalt { get; set; }
    public String Email { get; set; }
    public Boolean IsApproved { get; set; }
    public Boolean IsLockedOut { get; set; }
    public DateTime CreateDate { get; set; }
    public DateTime LastLoginDate { get; set; }
    public DateTime LastPasswordChangedDate { get; set; }
    public DateTime LastLockoutDate { get; set; }
    public ICollection<Role> Roles{ get; set; }
}