【发布时间】:2015-01-07 16:41:51
【问题描述】:
我正在使用 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 根本不处理这个吗?
【问题讨论】:
标签: c# asp.net-mvc-4 entity-framework-6 one-to-many