2016-11-30 94 views
1

我只想更新狀態國家特性,因此要防止註冊財產上的編輯進行更新只更新一些屬性。如何在實體框架

這裏是我的模型類

public class Currency{ 
     [Required] 
     public int Id{ get; set;} 
     [Required] 
     public string Sign { get; set; } 
     [Required] 
     public string Country { get; set; } 
     [Required] 
     public int Status{get;set;} 
    } 

這是控制器的默認編輯方法:

[HttpPost] 
     [ValidateAntiForgeryToken] 
     public ActionResult Edit([Bind(Include = "Id,Sign,Country,Status")] Currency currenc) 
     { 
      if (ModelState.IsValid) 
      { 
       db.Entry(currenc).State = EntityState.Modified; 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 
      return View(currenc); 
     } 
+0

【什麼是視圖模型在MVC?(http://stackoverflow.com/questions/11064316/what-is-viewmodel-in-mvc) –

+0

你要我寫觀點也有問題 –

+0

否 - 我想要你閱讀鏈接:) –

回答

1

寫的編輯方法如下:

[HttpPost] 
     [ValidateAntiForgeryToken] 
     public ActionResult Edit([Bind(Include = "Id,Sign,Country,Status")] Currency currenc) 
     { 
      if (ModelState.IsValid) 
      { 
       db.Entry(currenc).State = EntityState.Modified; 

       // Sign Property wouldn't be updated 
       db.Entry(currenc).Property(x => x.Sign).IsModified = false; 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 
      return View(currenc); 
     } 
0

您可以加載數據庫中的對象,僅更新已更改的屬性或要更改的屬性,並將其保存回數據庫。

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Edit(Currency currency) 
    { 
     if (ModelState.IsValid) 
     { 
      var record = db.Currencies.Find(currency.Id); 
      if(record != null) 
       { 
       record.Status = currency.Status; 
       record.Country = currency.Country; 
       db.SaveChanges(); 
       } 


      return RedirectToAction("Index"); 
     } 
     return View(currenc); 
    } 
+0

它是安全的刪除綁定(綁定(包括=) –

+0

是因爲你沒有使用對象本身,而是使用它來設置從數據庫加載的其他對象的屬性 –