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

时间:2012-05-24 16:07:01

标签: c# asp.net-mvc entity-framework

我创建了:

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

它正确地创建了2个自定义表。 现在,我想在用户和角色之间创建具有2列的表:RoleId,UserId

我应该调整我的模型来教EF创建这个关系表(UsersInRole)吗?

用户模型:

 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; }

}

2 个答案:

答案 0 :(得分:1)

如果您使用的是代码优先EF,那么您需要做的就是将一组Users添加到Role类,反之亦然。 EF将此双向链接作为信号在基础数据存储中创建多对多关系。总而言之,你的课程会增加类似的内容......

public class User
{
  ...

  List<Role> Roles {get; set;}

}

public class Role
{
  ...

  List<User> Users {get; set;}
}

答案 1 :(得分:0)

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; }

}