我需要基于角色的系统的原因:
所以我猜,我可以创建一个枚举,如果我需要一个新角色,只需将其添加到应用程序代码(应用程序将会改变,因此需要重新编译)。
现在我有
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; }
}
这是一对多。我看到的优点是,不是很多,而是1-many和join更少。应用程序已根据int
解析枚举的内容知道角色是什么。
我这样做的方式有什么缺陷吗?您的经验中是否有任何需要我将实际值存储在数据库中的内容?
答案 0 :(得分:1)
要明确的是,您建议在数据库中不需要实际的查找表来获取角色?相反,它们只有一个不是任何外键的int - 它只是应用程序中枚举的表示形式?
如果不了解申请的所有细节,就无法回答。除了这个免责声明,我认为没有任何内在问题。它肯定适用于某些系统。
可能的缺点: