Я пытаюсь обновить связанный объект в своем действии «Редактировать сообщение».Обновление дочерних объектов при редактировании родителя
У меня есть работа и модель JobNotes, которая выглядит следующим образом:
public class Job
{
public Job()
{
JobNotes = new List<JobNote>();
}
[Key]
public int JobID { get; set; }
public string jobName { get; set; }
public ICollection<JobNote> JobNotes { get; set; }
}
public class JobNote
{
[Key]
public int JobNoteID { get; set; }
public string Author { get; set; }
public string Note { get; set; }
public Job Job { get; set; }
}
Я также использовал Fluent API для отображения моих отношений:
(Любой обратной связи относительно того, имею я наделала это правильно только приветствовать!)
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Job>()
.HasMany(x => x.JobNotes)
.WithOptional(y => y.Job);
}
И проблема в том, что в моем методе Post мой JobNotes объект добавляется в родительский объект работы, но не сохраняются в базе данных.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(JobViewModel model)
{
if (ModelState.IsValid)
{
var existingJob = db.Jobs
.Include(x => x.JobNotes)
.Single(c => c.JobID == model.Job.JobID);
model.Job.JobNotes.Add(new JobNote
{
Author = "System",
Note = "Job modified by " + User.Identity.Name
});
db.Entry(existingJob).CurrentValues.SetValues(model.Job);
db.SaveChanges();
return RedirectToAction("Details", new { id = model.Job.JobID });
}
}
Что я сделал не так? Заранее спасибо за вашу помощь.
Отлично, спасибо – Evonet