我想學習MVC & EF遠離WebForms和ADO.NET。我只是把我的第一個試驗場所放在一起,看看它是如何發展的,並且遇到了絆腳石。使用MVC4 +實體框架更新模型4
我正在編輯頁面上的記錄並按下save.I沒有返回錯誤,但數據未更新。
Article模型進行更新
public class Article
{
[Key]
public int Id { get; set; }
public string Author { get; set; }
public string Title { get; set; }
public DateTime DateCreated { get; set; }
public string Body { get; set; }
public int Likes { get; set; }
public int Dislikes { get; set; }
public List<Comment> Comments { get; set; }
public string Tags { get; set; }
public int Category { get; set; }
}
編輯代碼在控制器上,該條款ArticleID從查詢字符串。
[HttpPost]
public ActionResult Edit(int articleId, FormCollection collection)
{
var result = from i in db.Articles
where i.Id == articleId
select i;
if (TryUpdateModel(result))
{
db.SaveChanges();
return RedirectToAction("Index");
}
return View(result.First());
}
在調試時,TryUpdateModel()返回true並調用db.SaveChanges。沒有錯誤返回。當被引導回Controller上的Index方法時,文章顯示不變。
這是顯而易見的事情嗎?
很多謝謝
第一步是在調試器中驗證if數據塊中的對象是否實際上用新值更新。 – 2013-03-12 11:24:27
我的理解是傳遞給TryUpdateModel的結果是您嘗試更新的記錄。該方法嘗試從發佈的數據創建模型,然後嘗試更新傳入的記錄。 FormCollection顯示正確的模型模式,但在調試時它不顯示值。 – James 2013-03-12 11:30:32
就在我的頭頂,在調試過程中,檢查result實體是否已經被修改,並且正在被DbContext跟蹤。尋找'EntityState.Modified'。相關SO問題:http://stackoverflow.com/questions/7106211/entity-framework-why-explicitly-set-entity-state-to-modified – 2013-03-12 11:37:32