MVC 中 ,一个用户可以有多个角色。怎么设计表?

于娜 2016-06-11 08:20:31
mvc中,一个用户可以有多个角色。怎么设计表?

public class Role
{
[Required]
[Display(Name = "角色编号")]
public int RoleId { get; set; }

[Required]
[Display(Name = "角色名称")]
public string Title { get; set; }
}


public class Administrator
{
[Required]
[Display(Name = "编号")]
public int AdministratorId { get; set; }

[Required]
[Display(Name = "名字")]
public string Name { get; set; }

[Required]
[Display(Name = "密码")]
public string Password { get; set; }

[Required]
[Display(Name = "角色")]
public string Roles { get; set; }

[Required]
[Display(Name = "角色信息")]
public Role Role { get; set; }
}


这样子 自动生成视图,怎么让连个表关联起来?并没有多选复选框啊?可以让操作者选择多个角色啊?
...全文
765 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
RBAC,都是多对多关系
正怒月神 版主 2016-06-12
  • 打赏
  • 举报
回复
一个用户可以有多个角色,那么就应该创建对应的角色表。 1 角色表。 id,roleName 很简单的说明,你有哪些角色 2 角色关系表 id,uid,roleId 哪些角色分配给了哪些用户,这是多对多的关系 3用户表 id , userName 用户表 当然,你的角色应该还有相应的功能。可能是菜单角色,也可能是功能角色。这个具体看角色表关联到哪些功能的表了。 假设你和菜单有关系。 那么 角色表应该和菜单表有一个关系表 角色菜单关系表 id , roleId,menuId 某个角色,拥有哪些菜单
于娜 2016-06-12
  • 打赏
  • 举报
回复
public class Administrator { [Required] [Display(Name = "管理员编号")] public int AdministratorId { get; set; } [Required] [Display(Name = "管理员名字")] public string Name { get; set; } [Required] [Display(Name = "管理员角色")] public string[] Roles { get; set; } } 实体映射怎么能调整? 上面int 型映射到数据库中也是整型,string型映射到数据也是字符串型,那么string []能否映射到数据库的字符串字段,同时让它用逗号“,”分隔?怎么做到?
于娜 2016-06-12
  • 打赏
  • 举报
回复
引用 4 楼 caozhy 的回复:
想几个就几个,根本不需要这些代码,直接使用默认的membership功能就可以。
主要是角色字段怎么写?这样吗? [Required] [Display(Name = "角色")] public ICollection<Role> Roles { get; set; }
Kevin_Zhuang 2016-06-12
  • 打赏
  • 举报
回复
用户和角色1对1 在用户里面创建一个角色的对象就可以了, 用户和角色1对多,那你需要一个中间表,做显示的话,建议你先弄个视图
threenewbee 2016-06-11
  • 打赏
  • 举报
回复
想几个就几个,根本不需要这些代码,直接使用默认的membership功能就可以。
于娜 2016-06-11
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
在你的实体 Administrator 中如果需要表示“角色”,那么应该是一个数组——多个角色。如果你写成一个 Administrator 最多只有一个角色,这代码显然是脱离了实际业务逻辑设计文档,代码是废的。
[Required] [Display(Name = "角色")] public string[] Roles { get; set; } 写成这样数组形式码?
  • 打赏
  • 举报
回复
在你的实体 Administrator 中如果需要表示“角色”,那么应该是一个数组——多个角色。如果你写成一个 Administrator 最多只有一个角色,这代码显然是脱离了实际业务逻辑设计文档,代码是废的。
  • 打赏
  • 举报
回复
如果一个表简单到那种程度,就不要煞有介事地弄什么表。角色可以直接在相关的其他表中用它的名称,而不需要设置一个“角色表”。不要为简单到无意义的对象再创建什么自定义的封装。 至于说为某人设置角色,这是“多对多的关系”。如果你学习过关系数据库的范式就知道,这不能放到人员表中,而要有一个独立的“中间表”或者叫做“关系表”,这是一个独立的表,只有两个字段分别表示人员和角色。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧