我有以下三个表
Employee(empid, name)
Role(roleid, name)
EmpRoleMap(mapid, empid,roleid)
在索引视图中,我显示了员工与每位员工的编辑链接的链接。当用户点击编辑时,它会打开所选员工的编辑屏幕。
要生成此页面,我将对数据库进行两次调用。首先是获取有关所选员工的详细信息。秒是查询EmpRoleMap表以找出员工所属的所有角色。
我想在单个数据库调用中执行相同的操作,即单个调用将向我提供有关员工和EmpRoleMap&的角色ID的详细信息。给定员工的RoleName列表。
我在Scaffolding中使用Code First方法。
如何使用EntityFramework执行此操作?我们可以在LINQ中使用“Include”子句从其他表中获取其他数据(此处为EmpRoleMap,Role)。
答案 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属性导航到员工角色。
请尝试使用此代码并向我提供反馈。