[投稿の編集] アクションで関連エンティティを更新するのに苦労しています。
次のような Job と 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 オブジェクトが親の Job オブジェクトに追加されているのに、データベースに保存されていないことです。
[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 });
}
}
私は何を間違えましたか?よろしくお願いします。