首先,对不起我的英语。 其次,我不擅长数据库建模,所以我可能完全错了。
我正在撰写一个网站(将其视为一个论坛),在每个帖子中,每个用户都可以拥有不同的角色。
我不使用实体框架的方式就是创建3个表:
其中UserGroupRole将包含3个表的键。
如何使用实体框架?
也许整个方法都不正确,我不确定。
提前致谢!
答案 0 :(得分:1)
是的,我可能也会使用4个实体和表格。在EF 4.1中有以下几点:
public class User
{
public int Id { get; set; }
public ICollection<UserGroupRole> UserGroupRoles { get; set; }
}
public class Group
{
public int Id { get; set; }
public ICollection<UserGroupRole> UserGroupRoles { get; set; }
}
public class Role
{
public int Id { get; set; }
public ICollection<UserGroupRole> UserGroupRoles { get; set; }
}
public class UserGroupRole
{
[Key]
public int UserId { get; set; } // FK property
[Key]
public int GroupId { get; set; } // FK property
[Key]
public int RoleId { get; set; } // FK property
public User User { get; set; }
public Group Group { get; set; }
public Role Role { get; set; }
}
外键属性强制要求所有三个关系(不允许null
),并且所有三个ID上的复合键确保用户,组和角色的任何组合只能存在一次。您可以删除部分导航集 - 例如Group
和Role
- 如果您不需要它们。