public static int AddNewQuestion(Question question, int testId = 0) { try { using (var ctx = new TestStudentDBEntities()) { question.Created = DateTime.Now; ctx.Questions.Add(question); ctx.SaveChanges(); if (question.Id > 0) { foreach (var answer in question.Answers) { answer.QuestionId = question.Id; answer.Created = DateTime.Now; ctx.Answers.Add(answer); ctx.SaveChanges(); } if (testId > 0) { var question2Test = new Question2Test() { QuestionId = question.Id, TestId = testId }; ctx.Question2Test.Add(question2Test); ctx.SaveChanges(); } return(question.Id); } } return(0); } catch (Exception ex) { MessageBox.Show("Ошибка при добавлении вопроса в БД", "Ошибка работы с БД", MessageBoxButton.OK, MessageBoxImage.Error); return(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); } }
public static bool DeleteQuestion(Question question) { try { using (var ctx = new TestStudentDBEntities()) { //Удаляем сначала ответы foreach (var answer in question.Answers) { answer.IsDeleted = true; } question.IsDeleted = true; EditQuestion(question); //потом если всё ок, то привязку к тесту var quest2TestRelation = ctx.Question2Test.Where(q => q.QuestionId == question.Id).ToArray(); foreach (var question2Test in quest2TestRelation) { ctx.Question2Test.Remove(question2Test); ctx.SaveChanges(); } //И наконец удаляем сам вопрос //ctx.Questions.Attach(question); //ctx.Questions.Remove(question); //ctx.SaveChanges(); return(true); } } catch (Exception ex) { MessageBox.Show("Ошибка при удалении вопросов", "Ошибка работы с БД", MessageBoxButton.OK, MessageBoxImage.Error); return(false); } }