예제 #1
0
        /// <summary>
        /// 处理同步教师信息
        /// 此方法分别更新四张表,分别是:School_Teachers,Sys_User,Sys_User_Role,Sys_UserLogOn
        /// </summary>
        public void ProcessTeacher()
        {
            Console.WriteLine("南航项目:开始同步教师信息 --> " + DateTime.Now.ToLocalTime());
            var sw = new Stopwatch();

            sw.Start();

            var newDb = new NHModel();
            var oldDb = new NanHangAccept();

            ///---------      Step1: 更新 School_Teachers 表数据      ---------///
            ProcessSchoolTeacherInfo(oldDb, newDb);
            ///---------      Step2: 更新 Sys_User 表数据      ---------///
            ProcessSchoolTeacherSysUser(oldDb, newDb);
            ///---------      Step3: 更新 Sys_User_Role 表数据      ---------///
            ProcessSchoolTeacherSysUserRole(oldDb, newDb);
            ///---------      Step4: 更新 Sys_UserLogOn 表数据      ---------///
            ProcessSchoolTeacherSysUserLogON(oldDb, newDb);

            //newDb.BulkDelete(newDb.TeacherInfoes.ToList()); //删除中间表的所有教师数据
            newDb.Dispose();
            oldDb.Dispose();
            sw.Stop();
            Console.WriteLine("南航项目:同步教师信息结束 --> 合计耗时:" + sw.ElapsedMilliseconds / 1000 + "s");
        }
예제 #2
0
        /// <summary>
        /// 处理同步学生信息 学生信息同步6张表
        /// 分别为: School_Students,Sys_User,Sys_User_Role,Sys_UserLogOn,Dorm_DormStudent,Dorm_Dorm
        /// </summary>
        public void ProcessStudent()
        {
            Console.WriteLine("南航项目:开始同步学生信息 --> " + DateTime.Now.ToLocalTime());
            var sw = new Stopwatch();

            sw.Start();

            var newDb = new NHModel();
            var oldDb = new NanHangAccept();

            ///---------      Step1: 更新 School_Students 表数据      ---------///
            ProcessSchoolStudentInfo(oldDb, newDb);
            Console.WriteLine(" *** 同步 School_Students 结束 。");
            ///---------      Step2: 更新 Sys_User 表数据      ---------///
            ProcessSchoolStudentSysUser(oldDb, newDb);
            Console.WriteLine(" *** 同步 Sys_User 结束 。");
            ///---------      Step3: 更新 Sys_User_Role 表数据      ---------///
            ProcessSchoolStudentSysUserRole(oldDb, newDb);
            Console.WriteLine(" *** 同步 Sys_User_Role 结束 。");
            ///---------      Step4: 更新 Sys_UserLogOn 表数据      ---------///
            ProcessSchoolStudentSysUserLogOn(oldDb, newDb);
            Console.WriteLine(" *** 同步 Sys_UserLogOn 结束 。");
            ///---------      Step5: 更新 Dorm_Dorm 表数据      ---------///
            ProcessSchoolStudentDormInfo(oldDb, newDb);
            Console.WriteLine(" *** 同步 Dorm_Dorm 结束 。");
            ///---------      Step6: 更新 Dorm_DormStudent 表数据      ---------///
            ProcessSchoolStudentSysUserDormStudent(oldDb, newDb);
            Console.WriteLine(" *** 同步 Dorm_DormStudent 结束 。");

            //newDb.BulkDelete(newDb.StudentInfoes.ToList()); //批量删除中间表的所有数据
            newDb.Dispose();
            oldDb.Dispose();
            sw.Stop();
            Console.WriteLine("南航项目:同步学生信息结束 --> 合计耗时:" + sw.ElapsedMilliseconds / 1000 + "s");
        }
예제 #3
0
        /// <summary>
        /// 处理同步组织机构信息(学生组织结构)
        /// </summary>
        public void ProcessOrgInfoStu()
        {
            Console.WriteLine("开始同步组织机构信息: 南航项目 --> " + DateTime.Now.ToLocalTime());
            var sw = new Stopwatch();

            sw.Start();
            //校方数据集(分为两种:修改数据和新增数据)
            var newDb   = new NHModel();
            var newData = newDb.OrganizationInfo_stu.Select(p => new Sys_Organize {
                F_Id = p.OrgId, F_FullName = p.OrgName, F_ParentId = p.ParentOrgId, F_CreatorTime = p.CreatedTime, F_LastModifyTime = p.LastUpdatedTime, F_EnCode = p.OrgId, F_DeleteMark = false
            }).ToList();

            //获取生产环境数据库数据集
            var oldDb = new NanHangAccept();
            //var oldData = oldDb.Sys_Organize.Select(p => new Sys_Organize { F_Id = p.F_Id, F_FullName = p.F_FullName, F_ParentId = p.F_ParentId, F_CreatorTime = p.F_CreatorTime, F_LastModifyTime = p.F_LastModifyTime }).ToList();
            var oldData   = oldDb.Sys_Organize.ToList();
            var interList = newData.Intersect(oldData).ToList(); //取交集 (不作任何操作)

            oldData = oldData.Except(interList).ToList();        //将交集从内存删除,以节省内存空间并减少循环次数
            newData = newData.Except(interList).ToList();
            var addList = newData.Except(oldData).ToList();      //取差集 (新增和修改数据)

            var idList  = oldData.Select(p => p.F_Id).ToList();
            var endList = new List <Sys_Organize>();

            foreach (var org in addList)
            {
                if (org.F_ParentId == null)
                {
                    org.F_ParentId = "2";
                }
                if (idList.Contains(org.F_Id))
                {
                    oldDb.Set <Sys_Organize>().Where(p => p.F_Id == org.F_Id).Update(p => new Sys_Organize
                    {
                        F_ParentId       = org.F_ParentId,
                        F_FullName       = org.F_FullName,
                        F_CreatorTime    = org.F_CreatorTime,
                        F_LastModifyTime = org.F_LastModifyTime
                    });
                }
                else
                {
                    endList.Add(org);
                }
            }
            //newDb.BulkDelete(newDb.OrganizationInfo_stu.ToList()); //操作完成后,删除取出来的数据
            //oldDb.BulkInsert(endList);
            oldDb.Sys_Organize.AddRange(endList);
            oldDb.SaveChanges();
            oldDb.Dispose();
            newDb.Dispose();
            sw.Stop();
            Console.WriteLine("南航项目:同步组织机构信息结束 --> 合计耗时:" + sw.ElapsedMilliseconds / 1000 + "s");
        }