MVC 3 アプリケーションでエンティティ フレームワーク 4.3 を使用しています。エンティティを更新しようとすると (作成と削除は正常に動作します)、次のエラーが発生します。
Store update、insert、または delete ステートメントが予期しない数の行に影響を与えました (0)
デバッグ モードに入ると、[HttpPost] メソッドでフィード ID が指定されていないことがわかりました。
public ActionResult Edit(Feed feed)
{
if (ModelState.IsValid)
{
db.Entry(feed).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.FolderId = new SelectList(db.Folders, "FolderId", "Name", feed.FolderId);
return View(feed);
}
ただし、通常の Get メソッドでは ID が渡されます。それらは私のエンティティです
餌:
public class Feed
{
[ScaffoldColumn(false)]
public int FeedId { get; set; }
[StringLength(150, ErrorMessage = "The {0} must be less then {1} charecters")]
public string Title { get; set; }
[ScaffoldColumn(false)]
public string Description { get; set; }
[Required(ErrorMessage = "you must enter a valid link")]
[StringLength(500, ErrorMessage = "The {0} must be less then {1} characters long.")]
public string LinkUrl { get; set; }
[ScaffoldColumn(false)]
public DateTime PublishDate { get; set; }
[ScaffoldColumn(false)]
public string Image { get; set; }
[ForeignKey("Folder")]
[Required(ErrorMessage="you must choose a folder")]
public int FolderId { get; set; }
public virtual Folder Folder { get; set; }
public Feed()
{
PublishDate = new DateTime(2012, 1, 1);
}
}
フォルダ:
public class Folder
{
public int FolderId { get; set; }
[Required(ErrorMessage = "you must enter a folder name")]
[StringLength(150, ErrorMessage = "the {0} must be less then {1} charecters")]
public string Name { get; set; }
}
私は解決策を探しましたが、DbContext に存在しない更新メソッドを試したり、FeedId と FolderId の上に [Key] プロパティを定義したりするなど、どれも機能しませんでした。