我一直在努力與這個錯誤在過去的一天左右。我已經調試它多次,並且每個崩潰在這一行時間:ASP.NET MVC EntityState.Modified崩潰
db.Entry(article).State = EntityState.Modified;
註釋掉線擺脫了大跌,但記錄中沒有在數據庫中得到更新。
這裏是整個代碼:
[HttpPost]
[Authorize]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "ArticleId,MainTitle,SubTitle,DatePublished,Content,ImagePath,UserAccountId")] Article article)
{
if (ModelState.IsValid)
{
// This is necessary so that we can preserve the original publish date:
var originalArticle = db.Articles.Where(a => a.ArticleId == article.ArticleId).First();
article.DatePublished = originalArticle.DatePublished;
// This is necessary so that we can preserve who was the original poster:
article.UserAccountId = originalArticle.UserAccountId;
//db.Entry(article).State = EntityState.Modified; <---- Crashes
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.UserAccountId = new SelectList(db.UserAccounts, "UserAccountId", "FirstName", article.UserAccountId);
return View(article);
}
我真的很感激,如果有人可以幫助我走出這件事情! :)
EDIT:這是所拋出的異常:
「‘System.InvalidOperationException’類型的異常出現在EntityFramework.dll但在用戶代碼中沒有處理
其他信息:附加一個類型「TheNewsBETA.Models.Article」的實體失敗,因爲同一類型的另一實體已經具有相同的主密鑰值。使用「連接」的方法或設置一個實體的狀態設置爲「未改變」或「修飾時,這可能發生「如果圖中的任何實體有衝突的鍵值。這可能是因爲一些實體是新的,但尚未收到數據庫生成的鍵值。在這種情況下使用‘添加’實現方法具d或「已添加」實體狀態來跟蹤圖形,然後根據情況將非新實體的狀態設置爲「未更改」或「已修改」。
「它崩潰」不是回答的。檢查實際異常及其內部異常,並研究這些異常。 – CodeCaster
請原諒我的無知,被拋出的異常是:「類型的異常‘System.InvalidOperationException’發生在EntityFramework.dll但在用戶代碼中沒有處理」 –
請[編輯]它變成你的問題,而不是研究它。 – CodeCaster