在我们编程中数据是不会一点都没有变动,这是不可能的,因为数据时刻都在变动有数据的新增、修改、和删除。
下面我们来看一下新增数据的代码。
我们在做数据的新增时,不可以毫无顺序的新增。因为新增有一点的规律的。
例如新增教师数据。
我们要新增的表有四张:用户表PW_User、教师表PW_Teacher、用户类型明细表PW_UserRoleDetail、教师明细表PW_TeacherDetail
判断新增的先后顺序条件:谁做了谁的外键就先新增谁。
由上图所得,PW_User中的UserID分别在PW_Teacher和PW_UserRoleDetail中做了外键,而PW_Teacher中的TeacherID在PW_TeacherDetail中做了外界,所有可以得出。
新增的顺序:PW_User PW_Teacher或PW_UserRoleDetail(这两张表没有先后顺序) PW_TeacherDetail
我们新增数据,是要每一条数据都进行一个新增,不能留空。
所有我们要清楚数据的来源。
还有我们新增的代码不能重复,所有每次新增的时候都要进行数据的查重,如果数据重复就不把数据保存到数据库,否则就执行保存
下面我们来看代码: public ActionResult InsertTeacher(PW_Teacher pwTeacher,PW_User pwUser, HttpPostedFileBase fileTeacherImage) { ReturnJson returnJson = new ReturnJson(); try { //判断新增老师是否已经在校任教,没有就新增 //查询的条件是:教师身份证号码和教师名称 var listTeacher = (from tbTeacher in myModels.PW_Teacher where tbTeacher.TeacherName == pwTeacher.TeacherName || tbTeacher.TeacherIDNum == pwTeacher.TeacherIDNum select tbTeacher).Count(); if (listTeacher==0) { //判断该账号是否已经有人使用 //查询的条件是教师的编号,因为该教师编号就是该教师的账号 var userCount = (from tbUser in myModels.PW_User where tbUser.UserNuber == pwTeacher.TeacherNumber select tbUser).Count(); if (userCount==0) { //新增第一张表:用户表 //教师账号和教师编号一致 pwUser.UserNuber = pwTeacher.TeacherNumber;//账号 pwUser.Password = Common.AESEncryptHelper.Encrypt(pwTeacher.TeacherNumber);//密码 pwUser.ToVoidNo = true;//账号是否启用:默认为true myModels.PW_User.Add(pwUser);//保存数据 if (myModels.SaveChanges()>0)//判断是否保存成功 { var userId = pwUser.UserID; //二、新增教师表 byte[] imgFile = null; if (fileTeacherImage != null && fileTeacherImage.ContentLength>0) { //初始化数组的长度,为节省空间,长度由实际上传的图片的长度决定 imgFile = new byte[fileTeacherImage.ContentLength]; //读取该图片文件 //将图片转为流结束位置 //将流读取为byte[],参数:byte[],读取开始位置,读取字节数 fileTeacherImage.InputStream.Read(imgFile, 0, fileTeacherImage.ContentLength); } pwTeacher.UserID = userId;//用户ID pwTeacher.TeacherPicture = imgFile;//教师图片 myModels.PW_Teacher.Add(pwTeacher); myModels.SaveChanges();
//三、新增用户角色明细表 PW_UserRoleDetail pwUserRoleDetail = new PW_UserRoleDetail(); pwUserRoleDetail.UserID = userId; pwUserRoleDetail.UserTypeID = 4; myModels.PW_UserRoleDetail.Add(pwUserRoleDetail); myModels.SaveChanges();
//四、新增教师明细表 PW_TeacherDetail pwTeacherDetail = new PW_TeacherDetail(); pwTeacherDetail.AcademeID = Convert.ToInt32(pwTeacher.AcademeID); pwTeacherDetail.UserTypeID = 4; pwTeacherDetail.TeacherID = pwTeacher.TeacherID; myModels.PW_TeacherDetail.Add(pwTeacherDetail); myModels.SaveChanges();
returnJson.State = true; returnJson.Text = "保存教师信息成功!"; } } else { returnJson.State = false; returnJson.Text = "该账号或统一认证码已经存在!"; } } else { returnJson.State = false; returnJson.Text = "该教师信息已经存在,不需要重复输入数据!"; } } catch (Exception e) { Console.WriteLine(e); returnJson.State = false; returnJson.Text = "数据异常!"; } return Json(returnJson, JsonRequestBehavior.AllowGet); } |
代码是有的多单思路不难。
通过上面的代码我们就可以新增教师的数据了。
上面是我对数据新增的一些总结,有上面不对的请指出来。