コード例 #1
0
 public async Task EditTeacherAsync(Teacher teacher, string[] Disciplines)
 {
     if (teacher.Id == 0)
     {
         await this.CreateTeacherAsync(teacher, Disciplines);
         return;
     }
     else
     {
         foreach (var item in Disciplines)
         {
             Discipline discipline = await context.Disciplines
                                            .Where(x => x.Name == item)
                                            .FirstOrDefaultAsync();
             TrainingCourse trainingCourse =
                 await CreateTrainingCourseAsync
                 (TrainingCourseDisciplineId: discipline.Id, TrainingCourseTeacherId: teacher.Id);
         }
         IQueryable<TrainingCourse> disciplinesForRemove = context.TrainingCourses
                             .Where(x => x.TeacherId == teacher.Id && !Disciplines.Contains(x.Discipline.Name));
         foreach (var item in disciplinesForRemove)
         {
             context.Entry(item).State = EntityState.Deleted;
         }
         context.Entry(teacher).State = EntityState.Modified;
         await context.SaveChangesAsync();
     }
 }
コード例 #2
0
 // GET: Teachers/Edit/5
 public async Task<ActionResult> Edit(int? id)
 {
     if (id == null)
     {
         return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
     }
     Teacher teacher;
     if (id == 0)
     {
         teacher = new Teacher()
         {
             TrainingCourses = new List<TrainingCourse>()
         };
     }
     else
     { 
         teacher = await repository.Teachers
                                           .Include(x => x.Department)
                                           .Include(x => x.TrainingCourses.Select(d => d.Discipline))
                                           .Where(x => x.Id == id)
                                           .FirstOrDefaultAsync();
         if (teacher == null)
         {
             return HttpNotFound();
         }
     }
     ViewBag.DepartmentId = 
         new SelectList(repository.Departments, "Id", "Name", teacher.DepartmentId);
     ViewBag.Disciplines =
         new MultiSelectList(repository.Disciplines.Select(x => x.Name), teacher.TrainingCourses.Select(x=>x.Discipline.Name));
     return View(teacher);
 }
コード例 #3
0
        public async Task CreateTeacherAsync(Teacher teacher, string[] Disciplines)
        {
            teacher.Id = 0;
            context.Entry(teacher).State = EntityState.Added;
            foreach (var item in Disciplines)
            {
                Discipline discipline = await context.Disciplines
                                                     .Include(x=>x.TrainingCourses)
                                                     .Where(x => x.Name == item)
                                                     .FirstOrDefaultAsync();
                TrainingCourse trainingCouse = new TrainingCourse()
                {
                    Teacher = teacher,
                    Discipline = discipline
                };
                discipline.TrainingCourses.Add(trainingCouse);
                context.Entry(discipline).State = EntityState.Modified;
            }

            await context.SaveChangesAsync();
        }