如何使用EF / LINQ从其他表中获取数据

时间:2014-01-29 06:32:02

标签: c# linq entity-framework entity-framework-5

我有以下三个表

Employee(empid, name)
Role(roleid, name)
EmpRoleMap(mapid, empid,roleid)

在索引视图中,我显示了员工与每位员工的编辑链接的链接。当用户点击编辑时,它会打开所选员工的编辑屏幕。

要生成此页面,我将对数据库进行两次调用。首先是获取有关所选员工的详细信息。秒是查询EmpRoleMap表以找出员工所属的所有角色。

我想在单个数据库调用中执行相同的操作,即单个调用将向我提供有关员工和EmpRoleMap&的角色ID的详细信息。给定员工的RoleName列表。

我在Scaffolding中使用Code First方法。

如何使用EntityFramework执行此操作?我们可以在LINQ中使用“Include”子句从其他表中获取其他数据(此处为EmpRoleMap,Role)。

1 个答案:

答案 0 :(得分:0)

你必须做一个好的实体模型设计。我将尝试向您展示我所说的内容的一个示例,但请记住,此时我无法检查代码。

    public class EmployeeModel
    {
        [Key]
        [ForeignKey("EmployeeRoles")]

        public decimal empid { get; set; }

        public string name { get; set; }

        public virtual List<EmpRoleModel> EmployeeRoles { get; set; }
    }

    public class RoleModel
    {
        [Key]
        public decimal roleid { get; set; }

        public string name { get; set; }
    }

    public class EmpRoleModel
    {
        [Key]
        [Column(Order = 0)]
        [ForeignKey("Employee")]

        public decimal empid { get; set; }

        [Key]
        [Column(Order = 1)]
        [ForeignKey("Role")]

        public decimal roleid { get; set; }

        public virtual EmployeeModel Employee { get; set; }
        public virtual RoleModel     Role     { get; set; }
    }

现在,您可以通过EmployeeRoles属性导航到员工角色。

请尝试使用此代码并向我提供反馈。