/// <summary> /// 提交本地的数据更改 /// </summary> private void submitChanges() { foreach (Codes.ChangeSet cs in dc.ChangeSet.ToList()) { // 对数据表的操作类型:0更改,1删除 short type = cs.Type; if (cs.TableName == "Settings") { if (type == 0) { Codes.Settings s = dc.Settings.FirstOrDefault(t => t.Tag == "RollCall"); service.updateClassInfo((int)s.ClassID, s.Admin, s.Password, s.Phone); } } if (cs.TableName == "Student") { if (type == 0) { Codes.Student student = dc.Student.FirstOrDefault(t => t.No == cs.IntID); if (student != null) { service.updateStudent((int)cs.IntID, student.Name); } } else { service.deleteStudent((int)cs.IntID); } } if (cs.TableName == "Course") { if (type == 0) { Codes.Course course = dc.Course.FirstOrDefault(t => t.ID == cs.GuidID); if (course != null) { service.updateCourse(cs.GuidID, course.CourseName); } } else { service.deleteCourse(cs.GuidID); } } if (cs.TableName == "Record") { if (type == 0) { Codes.Record record = dc.Record.FirstOrDefault(t => t.ID == cs.GuidID); if (record != null) { service.updateRecord(cs.GuidID, record.Contents, record.Remark); } } } if (cs.TableName == "RecordIndex") { if (type == 1) { service.deleteRecordIndex(cs.GuidID); } } // 删除无用的变更记录 dc.ChangeSet.DeleteOnSubmit(cs); } dc.SubmitChanges(); }
/// <summary> /// 将数据保存到数据库 /// </summary> private void saveToDataBase() { if (IsNew) { Windows.SelectCourseWindow course = new Windows.SelectCourseWindow(); course.ShowDialog(); Guid id = course.ID; Guid recordID = RecordIndexID; // 保存记录索引 Codes.RecordIndex index = new Codes.RecordIndex() { ID = recordID, CourseID = id, Date = DateTime.Now }; dc.RecordIndex.InsertOnSubmit(index); } // 保存所有学生记录 for (int i = 0; i < names.Length; i++) { // 一个学生的迟到情况 string contents = info[infos[i].SelectedIndex]; contents = contents == "已到" ? "" : contents; if (contents == "请假" && remarks[i] == "") { ReasonForLeaveWindow reason = new ReasonForLeaveWindow(); reason.Info = names[i].Text; reason.ShowDialog(); remarks[i] = reason.Reason; } // 判断是新键数据,还是修改数据 if (IsNew) { Codes.Record record = new Codes.Record() { ID = Guid.NewGuid(), IndexID = RecordIndexID, Contents = contents, Remark = remarks[i], StudentNo = Convert.ToInt32(names[i].Tag) }; dc.Record.InsertOnSubmit(record); } else { // 修改数据,本来有更简单的修改方法的,使用这种方法实属无奈,貌似实现Linq To SQLite 的Dblinq有问题 foreach (Codes.Record record in dc.Record.ToList()) { // 只有记录被修改才保存 if (record.ID == recordIDs[i] && oldContent[i] != contents) { record.Contents = contents; record.Remark = remarks[i]; // 保存修改记录 Codes.ChangeSet cs = new Codes.ChangeSet() { TableName = "Record", GuidID = record.ID, Type = 0 }; dc.ChangeSet.InsertOnSubmit(cs); } } } } // 提交数据更改 dc.SubmitChanges(); }