有人可以帮我解决昨晚深夜发布的问题。我仍然坚持使用编辑方法。链接如下:
除了发布的内容之外,我还尝试过:
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;
}
答案 0 :(得分:0)
在上面的评论中,在Slauma的帮助下,这就是他所建议的,并且有效。
添加到IDataSource接口:
void Update(MensPlayer mensPlayer);
更新在Db类中实现:
void IDataSource.Update(MensPlayer mensPlayer)
{
Entry(mensPlayer).State = EntityState.Modified;
}
编辑操作:
[HttpPost]
public ActionResult Edit(MensPlayer mensPlayer)
{
if (ModelState.IsValid)
{
//Save Player
_dataSource.Update(mensPlayer);
_dataSource.Save();
TempData["message"] = string.Format("{0} has been saved", mensPlayer.Name);
return RedirectToAction("Detail", "MensPlayer", new {id = mensPlayer.Id});
}
return View(mensPlayer);
}
就像这一切都运行正常,虽然我假设我可以实现更新到整个DbSet,就像我使用Save一样。