使用Entity Framework实现三个表之间关联的最佳方法

时间:2011-09-09 23:54:33

标签: entity-framework

首先,对不起我的英语。 其次,我不擅长数据库建模,所以我可能完全错了。

我正在撰写一个网站(将其视为一个论坛),在每个帖子中,每个用户都可以拥有不同的角色。

我不使用实体框架的方式就是创建3个表:

  • 用户
  • 作用
  • UserGroupRole

其中UserGroupRole将包含3个表的键。

如何使用实体框架?

也许整个方法都不正确,我不确定。

提前致谢!

1 个答案:

答案 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上的复合键确保用户,组和角色的任何组合只能存在一次。您可以删除部分导航集 - 例如GroupRole - 如果您不需要它们。