ASP.NET MVC3でフォームを作成しましたが、データベースに加えた変更を保存するためのエントリを取得できませんが、デバッグ中に、変更がデータコンテキストに反映されていることに気付きました。このコードの実行中にエラーは発生していません。さらに必要な場合はお知らせください。ありがとう!
コントローラ
[HttpPost]
public ActionResult Edit(Tool tool, FormCollection collection)
{
if (collection["Tool.Person.PersonID"] != "")
{
tool.Person= context.People.Find(
Convert.ToInt32(collection["Tool.Person.PersonID"])
);
}
if (collection["Tool.Company.CompanyID"] != "")
{
tool.Company = context.Companies.Find(
Convert.ToInt32(collection["Tool.Company.CompanyID"])
);
}
if (ModelState.IsValid)
{
context.Entry(tool).State = EntityState.Modified;
context.SaveChanges();
return RedirectToAction("Index");
}
return View(tool);
}
最初の2つのif
ステートメントは、ユーザーが個人または会社を入力したかどうかを確認し、情報はFormCollectionを介して渡されます。PersonIDとCompanyIDは、それぞれPersonとCompanyの主キーです。メソッドを1行ずつ何度も調べて、同じ結果を達成しました-context.SaveChanges();の後、コンテキストは変更を反映しますが、データベースエントリはPerson_PersonIDとCompany_CompanyIDの両方でnullのままです。