Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 使用实体框架实现三个表之间关联的最佳方法_Entity Framework - Fatal编程技术网

Entity framework 使用实体框架实现三个表之间关联的最佳方法

Entity framework 使用实体框架实现三个表之间关联的最佳方法,entity-framework,Entity Framework,首先,对不起我的英语。 其次,我不擅长数据库建模,所以我可能完全错了 我正在写一个网站(把它想象成一个论坛),在这里,每个帖子中,每个用户都可以扮演不同的角色 不使用实体框架的方法是创建3个表: 使用者 团体 角色 用户组角色 其中UserGroupRole将包含3个表的键 我如何使用实体框架实现它 也许整个说法都不正确,我不确定 提前谢谢 是的,我可能还会处理4个实体和表。在EF 4.1中,大致如下: public class User { public int Id { get;

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

我正在写一个网站(把它想象成一个论坛),在这里,每个帖子中,每个用户都可以扮演不同的角色

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

  • 使用者
  • 团体
  • 角色
  • 用户组角色
其中UserGroupRole将包含3个表的键

我如何使用实体框架实现它

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


提前谢谢

是的,我可能还会处理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; }
}
公共类用户
{
公共int Id{get;set;}
公共ICollection用户组角色{get;set;}
}
公共课组
{
公共int Id{get;set;}
公共ICollection用户组角色{get;set;}
}
公共阶级角色
{
公共int Id{get;set;}
公共ICollection用户组角色{get;set;}
}
公共类UserGroupRole
{
[关键]
public int UserId{get;set;}//FK属性
[关键]
public int GroupId{get;set;}//FK属性
[关键]
public int RoleId{get;set;}//FK属性
公共用户{get;set;}
公共组组{get;set;}
公共角色{get;set;}
}

外键属性强制要求所有三个关系(
null
不允许),并且所有三个ID上的复杂键确保用户、组和角色的任何组合只能存在一次。如果不需要,您可以删除一些导航集合,例如在
组中
角色中

您能解释更多吗?
角色
之间有什么区别?
用户是在多个组中还是仅在一个组中?
角色
之间是否存在关系?如果是的话,是多对多还是一对多还是…?当然。一个用户可以在0-N组中,每个组中可以有1个rol。例如,用户“didacpunyet”是组“didac’s”中的角色“admin”,而用户“didacpunyet”是“Slauma’s”中的“member”。到目前为止,我发现最好的方法是拥有两个实体和一个关系。这将是用户和组角色,以及它们之间的1-N关系。好的,我理解这个解决方案,但我不知道如何做到这一点。我宁愿使用可视化设计,因为这是我与EF的第一个项目。下面是该图的屏幕截图(不要介意现有的关联)。你能解释一下如何在PlayerGroupRole.Player-Player.Id、PlayerGroupRole.Group-Group.Id和PlayerGroupRole.Role-Role.Id之间创建关联吗?@Dídac:据我所知:当你在设计器界面上单击鼠标右键时,你会发现一个选项“添加->关联”(或类似选项)。然后在对话框中定义关系的两端:实体、多重性、是否两侧都需要导航属性以及是否要添加外键属性(推荐)。