菜鸟笔记—多表联查与删除控制器方法的解析

之前有说过数据的增加、删除、修改都是建立在查询这个基础上,如果查询没做好另外三个操作怎样都是错的,做得再好也是枉然。这一次是我对多表联查与删除的学习心得和体会。以下是我截取的一段关于多表联查的代码:

List<studentVo> listStudent = (from tbStudent in myModels.PW_Student
                                join tbAcademe in myModels.SYS_Academe on tbStudent.AcademeID equals tbAcademe.AcademeID
                                join tbSpecialty in myModels.SYS_Specialty on tbStudent.SpecialtyID equals tbSpecialty.SpecialtyID
                                join tbGrade in myModels.SYS_Grade on tbStudent.GradeID equals tbGrade.GradeID
                                join tbClass in myModels.SYS_Class on tbStudent.ClassID equals tbClass.ClassID
                                join tbUser in myModels.PW_User on tbStudent.UserID equals tbUser.UserID
                                orderby tbStudent.studentID descending
                                select new studentVo
                                {
                                    studentID = tbStudent.studentID,
                                    UserID = tbUser.UserID,
                                    StudentNumber = tbStudent.StudentNumber,
                                    StudentName = tbStudent.StudentName,
                                    StudentIDNum = tbStudent.StudentIDNum,
                                    StudentSex = tbStudent.StudentSex,
                                    AcademeName = tbAcademe.AcademeName,
                                    SpecialtyName = tbSpecialty.SpecialtyName,
                                    GradeName = tbGrade.GradeName,
                                    ClassName = tbClass.ClassName,
                                    UserNuber = tbUser.UserNuber,
                                    //筛选条件
                                    AcademeID = tbAcademe.AcademeID,
                                    GradeID = tbGrade.GradeID,
                                    ClassID = tbClass.ClassID
                                }).ToList();![在这里插入图片描述](https://img-blog.csdnimg.cn/20190417143714608.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDU0NTY3Mw==,size_16,color_FFFFFF,t_70)

我将利用这段代码来说明我的学习心得和体会,“List< studentVo >”算是一张表格,但是它是利用“List<>”建立一张新的表格,“List<>”表示可通过索引访问的对象的强类型列表。提供用于对列表进行搜索、排序和操作的方法,然后通过“studentVo”这个自定义的元素类型来声明数据的读取和输入。

这个“listStudent”应该是将这张新建的表声明并命名,而且它是一个局部变量,它通过声明“tbStudent”这个自定义的表名(“tbStudent”这个变量是对“myModels”这个Models对象中“PW_Student”的声明并命名)来结合或者说连接“tbAcademe”、“tbSpecialty”、“tbSpecialty”、“tbGrade”、“tbClass”、“tbUser”、这些来自“myModels”中的自定义的表名,它们的连接条件是通过“tbStudent”的外键ID等于其它表的主键ID(这里举个简单的例子:join tbUser in myModels.PW_User on tbStudent.UserID equals tbUser.UserID,“tbUser” 是对“myModels”这个Models对象中“PW_User”的声明并命名,在“tbStudent”上的外键“UserID”等于“tbUser”的主键“UserID”,以此为条件将“PW_User”与“tbUser”结合在一起)。

在要查询的这张新建表单中以“tbStudent”中的“studentID”为条件进行降序排序,其中“orderby”是指排序,而“descending”指降序,这张表中“//筛选条件”之前的是要查询来自哪的的数据,在“//筛选条件”之后的“AcademeID”、“GradeID”、“ClassID”则是来自哪儿的参数(很抱歉,我并没有写出来)。ToList()查询多条数据并转为List,也就是表格了

接下来是删除的方法了,这回我截取的是一段关于删除方法的代码如下图

是不是看起来与查询没多大区别,它的重点就在于这个“Remove”移除了,在整个删除方法当中其他的一切条件都是为这个“Remove”服务的。如同图中所写的一样,它通过页面传来的“StudentID”作为参数,通过”dbStudent”这个变量找到该数据,然后在Models对象中移除这条数据,再声明”userId”等于”dbStudent”中的“UserID”,以它作为参数依次通过”dbUserRoleDetail”和”dbUser”这两个变量找到并删除该数据。最后将结果返回到页面。可以看出删除也是要讲逻辑的,一般都是从小的层级往大的层级一步一步往上删除的。这个删除方法无非是将数据查询出来,然后移除掉它的。
在这里插入图片描述
这一篇文献到这就结束了。

发布了26 篇原创文章 · 获赞 4 · 访问量 3615

猜你喜欢

转载自blog.csdn.net/weixin_44545673/article/details/89355801