我需要基于角色的系统的原因:
- 限制对页面的访问。
- 限制对页面上某些功能的访问。
- 服务层内部的检查/验证。
所以我猜,我可以创建一个枚举,如果我需要一个新角色,只需将它添加到应用程序代码中(应用程序无论如何都会更改,因此需要重新编译)。
所以现在我有
public class User
{
/* .. */
public virtual ICollection<UserRole> Roles {get; set;}
}
public enum UserRoleType
{
Administrator,
User
}
public class UserRole
{
public int UserRoleId { get; set; }
public int RoleTypeValue { get; set; }
public UserRoleType RoleType
{
get { return (UserRoleType)RoleTypeValue; }
set { RoleTypeValue = (int)value; }
}
public virtual User User { get; set; }
}
这是一对多。我看到的优点是,不是多对多,而是一对多,并且连接更少。int
应用程序已经根据枚举解析的内容知道角色是什么。
我这样做的方式有什么缺陷吗?根据您的经验,您是否遇到过任何需要我将实际值存储在数据库中的情况?