之前有说过数据的增加、删除、修改都是建立在查询这个基础上,如果查询没做好另外三个操作怎样都是错的,做得再好也是枉然。这一次是我对多表联查与删除的学习心得和体会。以下是我截取的一段关于多表联查的代码:
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”这两个变量找到并删除该数据。最后将结果返回到页面。可以看出删除也是要讲逻辑的,一般都是从小的层级往大的层级一步一步往上删除的。这个删除方法无非是将数据查询出来,然后移除掉它的。
这一篇文献到这就结束了。