如何仅更新Entity Framework中的某些属性

时间:2016-11-30 05:29:44

标签: asp.net asp.net-mvc-5

我只想更新状态国家属性,因此希望阻止在编辑时更新签名属性。

这是我的Model类

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;}
    }

这是控制器中的默认Edit方法:

[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);
        }

2 个答案:

答案 0 :(得分:1)

编写Edit方法,如下所示:

[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);
        }

答案 1 :(得分: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);
    }