没有相关表的实体框架关系

时间:2015-02-21 13:26:37

标签: mysql entity-framework-6 foreign-key-relationship

我在非关系型数据库中有三个表:

enter image description here

roles_users是一个查找表,其中包含usersroles

的标识字段

在我的代码中,我为所有这三个表创建了必要的实体类:

users

[Table("users")]
public class User
    : AuditableEntity<int>
{
    [Key]
    [Display(Name = "Id")]        
    public int id { get; set; }

    [Display(Name = "User Name")]
    [Required]
    public string login { get; set; }

    [Display(Name = "Name")]
    [Required]
    public string name { get; set; }       

    **public virtual ICollection<UserRole> UserRole { get; set; }**
}

roles

[Table("roles")]
public class Role
    : Entity<int>
{
    [Key]
    [Display(Name = "Id")]        
    public int id { get; set; }

    [Display(Name = "Role")]
    public string name { get; set; }

    **public virtual ICollection<UserRole> UserRole { get; set; }**
}

roles_users

[Table("roles_users")]
public class UserRole
    : Entity<int>
{
    [Key]
    [ForeignKey("Role")]
    public int role_id { get; set; }

    [Key]
    [ForeignKey("User")]
    public int user_id { get; set; }

    public virtual User User { get; set; }
    public virtual Role Role { get; set; }
}

我正在尝试将角色表添加到users表中,以便我可以检索用户的关联角色,并且根据我的阅读,ForeignKey应放在role_id上根据上面发布的代码,将UserRoles(roles_users)类映射到两个表上,并且user_id,但这不起作用。

非常感谢任何见解。

更新

我没有使用Visual Studio生成这些实体类,并且不想。

更新2

我现在在多重性

上收到以下错误
  

UserRole_Role_Source :: Multiplicity在Role中无效   'UserRole_Role'中的'UserRole_Role_Source'。因为   依赖角色属性不是关键属性,即上限   依赖角色的多样性必须是'*'。

更新3

我明白了,UserRoleUserRole的多样性应该是一个集合,因为它是多对多的关系,即使它不是,所以我根据上面代码中突出显示的块更改了代码。

1 个答案:

答案 0 :(得分:1)

您将其设计为多对多关系。

如果您不希望它是多对多关系,那么您可以删除联合表并将role_id列作为角色的外键直接添加到users表。无论如何,你仍然需要在类Role上使用UserID的Collection。

如果您的用户一次只能拥有一个角色,那么联合表就会过度工程化。