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); } }
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); } }