У меня возникли некоторые проблемы при обновлении и вставке записей с использованием ASP.NET MVC и Entity Framework.
У меня есть форма (которая представляет собой отчет), которая создается динамически и может содержать любое количество вопросов.,Я пытаюсь разрешить пользователю редактировать отчет и отправлять изменения, чтобы он обновлялся в базе данных.
Я извлекаю отчет, который нужно отредактировать, из базы данных через репозиторий, затем устанавливаю его вэкземпляр ModeratorReport
.Затем я изменяю значение свойств и использую db.SaveChanges
для сохранения изменений в базе данных.
Проблема в том, что она не сохраняет изменения.
Пожалуйста, кто-то может посоветоватьмне что я делаю не так?
Вот это Edit
Действие:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(FormCollection formCollection, int moderatorReportId, string status)
{
ModeratorReport reportToEdit = repository.GetModeratorReportById(moderatorReportId);
List<QuestionAnswer> originalReportAnswers = repository.GetAllModeratorReportAnswers(moderatorReportId, status).ToList();
foreach (QuestionAnswer answer in originalReportAnswers) {
reportToEdit.QuestionAnswers.Remove(answer);
}
int sectionID;
int questionID;
foreach (string key in formCollection.AllKeys)
{
var value = formCollection[key.ToString()];
Match m = Regex.Match(key, "section(\\d+)_question(\\d+)");
if (m.Success) {
QuestionAnswer newAnswer = new QuestionAnswer();
sectionID = Convert.ToInt16(m.Groups[1].Value.ToString());
questionID = Convert.ToInt16(m.Groups[2].Value.ToString());
newAnswer.ModeratorReportID = moderatorReportId;
newAnswer.SectionID = sectionID;
newAnswer.QuestionID = questionID;
newAnswer.Answer = value;
newAnswer.Status = "SAVED";
reportToEdit.QuestionAnswers.Add(newAnswer);
}
}
reportToEdit.Status = "SAVED";
AuditItem auditItem = new AuditItem();
auditItem.ModeratorReportID = moderatorReportId;
auditItem.Status = "SAVED";
auditItem.AuditDate = DateTime.Now;
auditItem.Description = "The Moderator report..."
auditItem.UserID = User.Identity.Name;
reportToEdit.Audit.Add(auditItem);
db.SaveChanges();
return RedirectToAction("Details", new { id = moderatorReportId });
}