我使用EF 6,MVC 4(或5),並試圖更新我的2個實體具有獨立的關聯之間的關係設置從而更新一到許多獨立的關聯關係斷開場景
public class Activity{
public int ID {get;set;}
public string Description{get;set;}
public ActivityGroup ActivityGroup{get;set;}
}
public class ActivityGroup{
public int ID{get;set;}
public string Description{get;set;}
public ICollection<Activity> Activities{get;set;}
}
在我保存/編輯的操作方法,我似乎無法得到的關係來更新
[HttpGet]
public ActionResult Edit(int id = 0)
{
EditActivityVM model = new EditActivityVM();
model.Activity = db.Activities.Include(a => a.ActivityGroup).SingleOrDefault(a => a.ID == id);
if (model.Activity == null)
{
return HttpNotFound(string.Format("Activity with ID: {0} not found", id.ToString()));
}
model.ActivityGroups = db.ActivityGroups.ToList();
return View(model);
}
[HttpPost]
public ActionResult Edit(EditActivityVM activity){
if(ModelState.IsValid){
db.Entry(model.Activity).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
}
public class EditActivityVM{
public ICollection<ActivityGroup> ActivityGroups{get;set;}
public Activity Activity{get;set;}
}
@model EditActivityVM
@Html.HiddenFor(m => m.Activity.ID)
<div class="editor-label">
@Html.LabelFor(model => model.Activity.ActivityGroup.ID)
</div>
<div class="editor-field">
@Html.DropDownListFor(m => m.Activity.ActivityGroup.ID, Model.ActivityGroups.Select(ag => new SelectListItem { Text = ag.Description, Value = ag.ID.ToString() }), "Select Group", null)
@Html.ValidationMessageFor(model => model.Activity.ActivityGroup.ID)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Activity.Description)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Activity.Description)
@Html.ValidationMessageFor(model => model.Activity.Description)
</div>
的問題是,當調用SaveChanges我要麼得到一個併發問題或乾脆的ActivityGroup更新犯規。 我知道我可以在課堂上添加FK,但真的不會。一定有辦法讓這個工作? EF完全不處理這個問題嗎?