コード例 #1
0
 /// <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();
 }
コード例 #2
0
        /// <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();
        }