Entity Framework 経由でデータを更新しようとすると、ASP.NET MVC3 に苦労しています。プロセスは次のとおりです。
私はこのモデルを持っています:
public class Bet
{
public string BetID { get; set; }
public int FixtureID { get; set; }
public string Better { get; set; }
public int GoalsHome { get; set; }
public int GoalsGuest { get; set; }
public virtual Fixture { get; set; }
}
コントローラーでは、where ステートメントを使用してテーブルをフィルター処理し、ユーザーに一致するエントリのみを取得します。
[HttpGet]
public ActionResult Index()
{
var user = User.Identity.Name;
var model = _db.Bets.Where(t => t.Better == user);
return View(model);
}
ビューは 2 つの部分で構成され、1 つはテーブル ヘッダーを処理し、もう 1 つはユーザーのすべてのベットを一覧表示します。
<fieldset>
<legend>Bets</legend>
<table>
<tr>
<th>
Kickoff
</th>
<th>
Home Team
</th>
<th>
Guest Team
</th>
<th>
Group
</th>
<th>
Bet
</th>
</tr>
@Html.EditorFor(m => m) //this is resolved in an self made EditorTemplate
</table>
EditorTemplate:
@model Betting.Models.Bet
<tr>
<td>
@Html.DisplayFor(modelItem => Model.Fixture.Kickoff)
</td>
<td>
@Html.DisplayFor(modelItem => Model.Fixture.HomeTeam)
</td>
<td>
@Html.DisplayFor(modelItem => Model.Fixture.GuestTeam)
</td>
<td>
@Html.DisplayFor(modelItem => Model.Fixture.Group)
</td>
<td>
@Html.TextBoxFor(modelItem => Model.GoalsHome, new { style = "width: 30px" }):
@Html.TextBoxFor(modelItem => Model.GoalsGuest, new { style = "width: 30px" })
</td>
@Html.HiddenFor(modelItem => Model.FixtureID)
</tr>
コントローラーに戻り、モデルを更新しようとします。
[HttpPost]
public ActionResult Index(FormCollection collection)
{
var user = User.Identity.Name;
var model = _db.Bets.Where(t => t.Better == user);
TryUpdateModel(model);
_db.SaveChanges();
return RedirectToAction("Index");
}
これはまったく何もしません。Entity Framework はデータベースをまったく更新しません。html ファイル内の結果の賭けタグが区別できるように、テーブルを分離しました (名前の値の前の [インデックス] に注意してください:
<input data-val="true" data-val-number="The field GoalsHome must be a number." data-val-required="The GoalsHome field is required." name="[1].GoalsHome" style="width: 30px" type="text" value="3" />:
<input data-val="true" data-val-number="The field GoalsGuest must be a number." data-val-required="The GoalsGuest field is required." name="[1].GoalsGuest" style="width: 30px" type="text" value="0" />
Entity Framework がデータベースを更新しない理由を誰か教えてもらえますか? オブジェクトのマッピングに何か問題がありますか?