2016-11-30 80 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

是因为你没有使用对象本身,而是使用它来设置从数据库加载的其他对象的属性 –