有人可以帮我解决我昨晚深夜发布的问题。我仍然坚持使用编辑方法。下方链接:
除了发布的内容外,我还尝试过:
HttpPost 编辑:
[HttpPost]
public ActionResult Edit(MensPlayer mensPlayer)
{
if (ModelState.IsValid)
{
//Save Player
_dataSource.Entry(mensPlayer).State = EntityState.Modified;
_dataSource.Save();
TempData["message"] = string.Format("{0} has been saved", mensPlayer.Name);
return RedirectToAction("Detail", "MensPlayer", new {id = mensPlayer.Id});
}
return View(mensPlayer);
}
上述方法的问题是Entry(mensPlayer).State
,代码不会在 .Entry() 处构建,我似乎不知道该方法在哪里被继承。请注意,这是 MVC-Music-Store 示例中使用的技术。
我还尝试过 Pro ASP.NET MVC3 Framework 书中的这种技术。
[HttpPost]
public ActionResult Edit(MensPlayer mensPlayer)
{
if (ModelState.IsValid)
{
//Save Player
_dataSource.Save();
TempData["message"] = string.Format("{0} has been saved", mensPlayer.Name);
return RedirectToAction("Detail", "MensPlayer", new {id = mensPlayer.Id});
}
return View(mensPlayer);
}
这种技术可以构建,但似乎不会将更改保存到数据库。
我怎样才能让它工作?我错过了什么?
如果有人需要查看整个解决方案,整个源代码都在 GitHub 上。
在下面 Slauma 的帮助下,我现在进行了如下修改:
添加void Update();
到 IDataSource 并将以下内容添加到 Db 类
void IDataSource.Update()
{
Entry(MensPlayers).State = EntityState.Modified;
}
HttpPost 编辑:
[HttpPost]
public ActionResult Edit(MensPlayer mensPlayer)
{
if (ModelState.IsValid)
{
//Save Player
_dataSource.Update();
_dataSource.Save();
TempData["message"] = string.Format("{0} has been saved", mensPlayer.Name);
return RedirectToAction("Detail", "MensPlayer", new {id = mensPlayer.Id});
}
return View(mensPlayer);
}
所有构建,但随后我收到此错误 实体类型 DbSet`1 不是当前上下文模型的一部分。
据信起源于:
void IDataSource.Update()
{
Entry(MensPlayers).State = EntityState.Modified;
}