2012-03-19 46 views
1

我一直在運行ASP.Net MVC C#電影數據庫教程,但一直試圖做一些小的改變,以幫助瞭解什麼位做什麼。我會補充說我是一個初學者。如何更新個人數據庫記錄ID

我有一個小表單和一個按鈕的頁面,當我填寫表單並單擊提交表單中的數據更新數據庫表中的預定記錄。

在控制器代碼中,我該如何指定單個記錄?假設表格中只有一條記錄,它會隨着新信息定期更新?

我想這是值得做的兩行代碼:

  db.Entry(data).State = EntityState.Modified; 
      db.SaveChanges(); 

我只是不知道如何單獨指定的記錄,以便得到更新?該記錄將有一個ID號碼(例如ID將爲「1」)。

的碼位,將做更新,因爲它主張:

// POST: /Data/Update/ 

    [HttpPost] 
    public ActionResult Update(Data data) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Entry(data).State = EntityState.Modified; 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     return View(data); 
    } 
+0

這是行不通的嗎? – 2012-03-19 17:41:30

+0

請勿在「C#MVC」等前加前綴。這就是標籤的用途。 – 2012-03-19 18:59:33

+0

什麼教程? http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application explain詳細請完成該教程。 – RickAndMSFT 2012-03-19 19:37:58

回答

1

EF需要知道在數據庫中更新哪一行。 如果「ID」屬性未從請求中綁定,則需要在代碼中明確設置它:

if (ModelState.IsValid) 
    { 
     data.Id = 1; //EF need to know which row to update in the database. 
     db.Entry(data).State = EntityState.Modified; 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 
+0

謝謝德米特里,不幸的是,由於某種原因沒有更新記錄(沒有錯誤,點擊該按鈕實際上並沒有做任何事情)。在Visual Web Developer中構建項目時也沒有錯誤。如果可以提供幫助,我可以提供在View中使用的代碼。 (該數據庫被稱爲「data.sdf」,並在數據庫中的表與記錄稱爲「數據」 - 對不起,我知道這是不對的,但我仍然在學習......) – Harry 2012-03-20 12:16:38

+0

嘗試運行調試器並在「if(ModelState.IsValid)」行設置一個斷點來檢查代碼是否被執行。使用調試器瀏覽代碼,查看實體屬性值。他們是否正確? – 2012-03-20 13:29:59

+0

謝謝德米特里,你是對的,它並沒有出現代碼被執行。我有一個稱爲「更新」的視圖(它位於視圖文件夾「數據/更新」),其中包含HTML和表單,並提供一個按鈕來提交更改,但該按鈕似乎沒有任何作用。按鈕只是簡單的有這樣的代碼:看起來代碼沒有被調用...現在我真的迷路了!大聲笑 – Harry 2012-03-20 13:54:00

相關問題