数据库首先在单个视图中使用具有外键的多个表

时间:2016-03-05 17:15:19

标签: asp.net-mvc asp.net-mvc-5

我有两张表departmentteacher,如下所示:

Department表(DeptID是主键)

DeptID | DeptName
 1         P
 2         C
 3         M

Teacher表(DeptID是外键)

   DeptID | TeacherName
    1         ABC
    1         PQR
    2         XYZ

我使用数据库第一种方法从这两个表中创建单个模型。我想在一个视图中显示这两个细节:

TeacherName | DeptName
    ABC          P
    PQR          P
    XYZ          C

我尝试使用脚手架创建控制器,但它会为模型中的单个表提供视图和CRUD操作。

是否有任何方法可以将这两个表一起映射到一个视图中?当我为数据库中的每个表使用不同的模型时,是否可以(很容易实现)?

1 个答案:

答案 0 :(得分:1)

您必须创建Viewmodel。

public class DepartmentTeacher
{
  public int DeptID   {get;set;}
  public string DeptName {get;set;}
  public int TeachID  {get;set;}
  public string TeachName {get;set;}
}

    using (var db = new SchoolContext())

{
                var query = (from tc in db.Teacher
                             join dp in db.Department on tc.DeptID equals dp.DeptID
                             //where st.STUDENT_ID == Customer_Id maybe you need
                             select new
                             {
                                dp.DeptName,
                                tc.TeachName

                             });

         foreach (var item in query)
                {
                    DepartmentTeacher.DeptName = item.DeptName;
                    DepartmentTeacher.TeachName = item.TeachName;
                }


}

 return View(DepartmentTeacher);

您可以使用此视图模型的每个进程。但是,您必须在视图页面上描述此Viewmodel。