こんにちは、SQL Server 2012 と EF のバンドルを使用して asp.net mvc3 プロジェクトを作成しています。データベースのエントリの作成と更新にドロップダウン リストを使用しています。ページを追加するとすべて正常に動作しますが、編集しようとすると変更を保存できません。私はブレークポイントを取得しようとしましたが、デバッグモードで内部例外がそれを伝えました
Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries.
これは私のコードです:
[Table("Pages", Schema = "myprojectname")]
[Bind(Exclude = "PageId")]
public class Page
{
public int PageId { get; set; }
public string PageContent { get; set; }
public int PageTitleId { get; set; }
public virtual PageTitle PageTitle { get; set; }
}
[Table("PageTitles", Schema = "myprojectname")]
public class PageTitle
{
public int PageTitleId { get; set; }
public string Title { get; set; }
public List<Page> Pages { get; set; }
}
public DbSet<Page> Pages { get; set; }
public DbSet<PageTitle> PageTitles { get; set; }
public ActionResult PageEdit(int id)
{
Page page = context.Pages.Find(id);
ViewBag.PageTitleId = new SelectList(context.PageTitles, "PageTitleId", "Title", page.PageTitleId);
return View(page);
}
[HttpPost]
[ValidateInput(false)]
public ActionResult PageEdit(Page page)
{
try
{
if (ModelState.IsValid)
{
context.Entry(page).State = EntityState.Modified;
context.SaveChanges();
return RedirectToAction("Index", "Administrator");
}
}
catch (DataException)
{
ModelState.AddModelError("", "Unable to save changes. Please try again");
}
ViewBag.PageTitleId = new SelectList(context.PageTitles, "PageTitleId", "Title", page.PageTitleId);
return View(page);
}
@model BalticCenter.Web.Models.Entities.SitePages.Page
@{
ViewBag.Title = "PageEdit";
Layout = "~/Views/Shared/_AdministratorLayout.cshtml";
}
<h2>PageEdit</h2>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Page</legend>
@Html.HiddenFor(x => x.PageId)
<div class="editor-label">
@Html.LabelFor(model => model.PageTitleId, "PageTitle")
</div>
<div class="editor-field">
@Html.DropDownList("PageTitleId", String.Empty)
@Html.ValidationMessageFor(model => model.PageTitleId)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.PageContent)
</div>
<div class="editor-field">
@Html.TextAreaFor(model => model.PageContent)
@Html.ValidationMessageFor(model => model.PageContent)
</div>
<p>
<input type="submit" value="Edit" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
私は自分の間違いを見ていません。何か案は?