我在绕过某个代码优先关系时遇到了麻烦。我有三个实体:Group,User,GroupPermission。 GroupPermission实体拥有关于与组相关的权限的信息。有三种权限:领导,编辑,用户。 GroupPermission表应该包含主键ID和权限的名称。然后我想要一个关系表,如下所示:Id - Group_Id - User_Username - GroupPermission_Id。可以有多个组,多个用户,多个权限。我有很多帮助我创建单个关系表的示例,但找不到包含多个关系的任何内容。EF 4.1代码首先多个多对多关系
这里是我的实体...
用户:
public class User
{
[Key, StringLength(EntityLength.UsernameLength)]
public string Username { get; set; }
[Required, StringLength(EntityLength.NameLength)]
public string FirstName { get; set; }
[Required, StringLength(EntityLength.NameLength)]
public string LastName { get; set; }
[Required, StringLength(EntityLength.Email)]
public string Email { get; set; }
public bool Active { get; set; }
public DateTime DateCreated { get; set; }
public virtual UserPermission UserPermission { get; set; }
public virtual ICollection<Group> Groups { get; set; }
public virtual ICollection<Project> Projects { get; set; }
public virtual ICollection<Issue> Issues { get; set; }
public virtual ICollection<GroupPermission> GroupPermissions { get; set; }
public string FullName
{
get { return FirstName + ' ' + LastName; }
}
}
组:
public class Group
{
[Key]
public int Id { get; set; }
[Required, StringLength(EntityLength.GenericLength)]
public string Name { get; set; }
[Required, StringLength(EntityLength.DescriptionLength)]
public string Description { get; set; }
public virtual ICollection<User> Users { get; set; }
public virtual ICollection<Project> Projects { get; set; }
public virtual ICollection<GroupPermission> GroupPermissions { get; set; }
}
GroupPermission:
public class GroupPermission
{
[Key]
public int Id { get; set; }
[StringLength(EntityLength.GenericLength)]
public string Name { get; set; }
public int GroupId { get; set; }
public virtual ICollection<Group> Groups { get; set; }
public int UserId { get; set; }
public virtual ICollection<User> Users { get; set; }
public enum Permission
{
Leader = 1,
Editor = 2,
User = 3
}
}
当采用这种结构创建的表,我得到一个Gro具有Id,Name,GroupId和UserId的upPermissions表。此表只需要Id和Name。然后它创建一个GroupPermissionUsers表,其中包含GroupPermissions_Id和User_Username。这是应该是Id,Group_Id,User_Username,GroupPermission_Id的表。
有没有人有任何提示,以完成这个或我想这不正确的设计?
我写了这个确切的(以这封信)解决方案进入我的项目,你提交这个,它似乎工作。我试图做到这一点,而没有额外的实体认为它可以完成,我错了。谢谢你确认我的怀疑。我以为我错过了一些东西,但是我花了多次谷歌搜索和一个周末才让它打我。 – snoluet 2012-02-06 18:03:24