昨夜遅くに投稿した質問について誰か助けてくれませんか。私はまだ編集方法にこだわっています。以下のリンク:
投稿されたものに加えて、私も試しました:
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 book からこの手法も試しました。
[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);
}
すべてのビルドですが、このエラーが発生します The entity type DbSet`1 is not part of the model for the current context.
これは、次のことに由来すると考えられています。
void IDataSource.Update()
{
Entry(MensPlayers).State = EntityState.Modified;
}