Beispiel #1
0
        public static bool EditQuestion(Question question)
        {
            try
            {
                using (var ctx = new TestStudentDBEntities())
                {
                    question.Modifiyed = DateTime.Now;
                    //Редактирование самого вопроса
                    ctx.Entry(question).State = EntityState.Modified;
                    ctx.SaveChanges();

                    //Удаление из БД удалённых вариантов
                    var currentIds = question.Answers.Where(a => a.Id > 0).Select(a => a.Id);
                    var dbIds      = ctx.Answers.Where(a => a.QuestionId == question.Id && !currentIds.Contains(a.Id)).ToArray();
                    foreach (var deletedAns in dbIds)
                    {
                        deletedAns.IsDeleted = true;
                        ctx.SaveChanges();
                    }


                    //Редактирование или добавление вариантов ответов
                    foreach (var answer in question.Answers)
                    {
                        if (answer.Id > 0)
                        {
                            ctx.Entry(answer).State = EntityState.Modified;
                        }
                        else
                        {
                            answer.Created = DateTime.Now;
                            ctx.Answers.Add(answer);
                        }
                        ctx.SaveChanges();
                    }


                    return(true);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка при редактировании вопроса", "Ошибка работы с БД", MessageBoxButton.OK,
                                MessageBoxImage.Error);
                return(false);
            }
        }
Beispiel #2
0
        public static void SaveTestParam(TestInstance test, TestGradeLimit[] limits)
        {
            try
            {
                using (var ctx = new TestStudentDBEntities())
                {
                    foreach (var limt in limits)
                    {
                        ctx.Entry(limt).State = limt.Id != 0? EntityState.Modified:EntityState.Added;
                        ctx.SaveChanges();
                    }

                    ctx.Entry(test).State = EntityState.Modified;
                    ctx.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка сохранения параметров теста", "Ошибка работы с БД", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }