如果我的数据库中有两个表:Foo和bar。Foo由FooId标识,而Bar由BarId标识。一个Bar可以有0到多个Foos,因此Foo具有BarId作为外键。我有一个代表此的模型和一个视图,可用于编辑Foo并选择(从下拉列表中)相关联的Bar。
给定控制器上的以下方法:
我的控制器应该如何从视图中的下拉菜单更新基于Entity Framework的模型?
给定控制器上的以下方法:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection formCollection)
{
Foo originalFoo = FooById(id);
if (!ModelState.IsValid)
{
return View(new VenueViewModel(originalVenue, _db.GetCounties(), _db.VenueTypeSet));
}
UpdateModel(originalFoo);
/* Instead of using UpdateModel I could just iterate through
formCollection and manually update originalFoo, it would
work but surely there is a better way? */
_db.SaveChanges();
return RedirectToAction("Index");
}
UpdateModel的调用会抛出一个没有InnerException的InvalidOperationException异常:
The model of type 'TestApplication.Models.Foo' was not successfully updated.
我的控制器应该如何从视图中的下拉菜单更新基于Entity Framework的模型?
myNewFoo
),它会填充myNewFoo.Bar.Id
。然后,您不能调用db.BarTable.Attach(myNewFoo.Bar);
吗? - Flater