【发布时间】:2015-06-30 14:47:46
【问题描述】:
我需要一个视图来显示员工名字和姓氏以及与员工相关的主管名字和姓氏。
我有 2 个模型,它们如下:
public class Employee
{
public int EmployeeID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Department { get; set; }
public int SupervisorID { get; set; }
public virtual ICollection<Supervisor> Supervisor { get; set; }
}
public class Supervisor
{
public int SupervisorID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
public string Department { get; set; }
public virtual Employee Employee { get; set; }
}
为了显示所需的数据,我创建了另一个模型:
public class EmployeeSupervisor
{
public int EmployeeID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Department { get; set; }
public string SupFirstName { get; set; }
public string SupLastName { get; set; }
public string SupPhone { get; set; }
public string SuoEmail { get; set; }
public string SupDepartment { get; set; }
}
在控制器的详细信息操作中,我执行以下操作:
Employee employee = db.Employees.Find(id);
Supervisor supervisor = db.Supervisors.Find(employee.SupervisorID);
EmployeeSupervisor es = new EmployeeSupervisor
{
EmployeeID = employee.EmployeeID,
Department = employee.Department,
FirstName = employee.FirstName,
LastName = employee.LastName,
SupFirstName = supervisor.FirstName,
SupLastName = supervisor.LastName,
SuoEmail = supervisor.Email,
SupPhone = supervisor.Phone,
SupDepartment = supervisor.Department
};
return View(es);
然后在我的视图中
@model TimeOffV3.Models.EmployeeSupervisor
最后我在视图中执行以下操作
@Html.DisplayFor(model => model.FirstName)
@Html.DisplayFor(model => model.LastName)
@Html.DisplayFor(model => model.SupFirstName)
@Html.DisplayFor(model => model.SupLastName)
当我使用 EmployeeSupervisor 模型类完成上述任务时,实体框架会在数据库中为 EmployeeSupervisor 创建一个对应的表(如预期的那样)。这让我相信我做错了,因为我无法想象每次我想显示来自 2 个不同模型的数据时,我都需要创建一个新的相应模型和表格。
我完成这项工作的方式是否正确?我应该能够使用 Employee 类中定义的导航属性访问主管信息吗?我可以传入多个模型,这样我就不必创建包含来自 2 个单独模型的信息的模型吗?
【问题讨论】:
-
对我来说,相似之处是如此接近,以至于我会制作一个员工模型并在此模型中拥有一个自引用的 EmployeeID 字段,该字段采用员工主管的 ID。
标签: c# asp.net-mvc entity-framework