ASP.Net MVC EF映射到具有三个主键的连接表

时间:2013-12-04 01:56:26

标签: c# asp.net sql asp.net-mvc entity-framework

我正在努力解决这个问题。我正在使用MVC 4和Code First Entity Framework。我有三节课。它们是用户,角色和项目。用户可以拥有许多项目,对于特定项目,用户可以拥有特定角色。我正在使用联结表来组合这三个表。以下是连接表的示例:

public class UserRolesinProject
{
     [Key, Column(Order = 0)]
     public int UserId { get; set;}
     [Key, Column(Order = 1)]
     public int RoleId  { get; set;}
     [Key, Column(Order = 2)]
     public int ProjectId  { get; set;}

}

以下是每个类的样本

public class DBUser
{
    [Key]
    public int UserId { get; set;}
    public string UserName { get; set;}
    public virtual ICollection< UserRolesinProject > Roles { get; set; }
}

public class DBRole
{
    [Key]
    public int RoleId { get; set;}
    public string RoleName { get; set;}
    public virtual ICollection< UserRolesinProject > Projects { get; set; }
}

public class Project
{
     [Key]
     public int ProjectId { get; set;}
     public string ProjectName { get; set;}
     public virtual ICollection< UserRolesinProject > Users { get; set; }
}

最后是上下文类的示例

    Public DBSet<DBUser>Users {get; set;}
    Public DBSet<DBRoles>Roles {get; set;}
    Public DBSet<Project>Projects {get; set;}
    Public DBSet<UserRolesInProject>UserRolesProjects {get; set;}

因此,当我使用包管理器控制台更新数据库时,此构建和表创建。我想要实现的是如果我从用户那里做一个LINQ语句我想要检索用户被分配到的所有项目以及相应的角色。现在,我只是获取每个字段的ID,它来自联结表和我在每个单独的类中对映射表执行的映射。我认为结果将是他们都将加入。我究竟做错了什么?我搜索并查看了不同的例子,但它们都是两个PK列而不是三个。我的桌子错了吗?我是否以低效的方式设置它们?在此先感谢您的帮助。

0 个答案:

没有答案