我想使用Entity框架更新asp.net mvc中的现有记录

时间:2017-11-23 11:13:25

标签: asp.net-mvc-5 record

我想检查数据库中是否已存在productDiscount实体,如果存在,那么我想更新它。但是,不是更新实体,而是以下代码添加新代码。如何解决这个问题..

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult ProductDiscount(ProductDiscount productDiscount)
    {
        if (!ModelState.IsValid)
        {
            var viewModel = new ViewModelProductDiscount()
            {
                Products = _context.Products.ToList()
            };
            return View(viewModel);
        }
        var id = productDiscount.ProductId;
        var disInDb = _context.ProductDiscounts.FirstOrDefault(p => p.ProductId == id);
        if (disInDb==null)
        {
            _context.ProductDiscounts.Add(productDiscount);
            _context.SaveChanges();              
        }
        else
        {
            _context.ProductDiscounts.Add(disInDb);
            _context.SaveChanges();
            return Content(disInDb.Id.ToString());
        }


       return RedirectToAction("Products");
    }

2 个答案:

答案 0 :(得分:0)

来自else块的

删除_context.ProductDiscounts.Add(disInDb);只需将productDiscount值映射到disInDb然后_context.SaveChanges();

喜欢

    else
    {        
       disInDb.Name = productDiscount.Name;
       disInDb.Discription = productDiscount.Discription;

       _context.SaveChanges();
    }

答案 1 :(得分:-1)

我真的不知道你的ProductDiscount对象是怎样的,所以我会假设你的对象道具,但它应该让你知道如何更新记录。在else这一行_context.ProductDiscounts.Add(disInDb);内,是造成问题的原因。相反,您希望在else

中执行以下操作
else
{
   disInDb.DiscountCode = "somecode"; //change this to the correct prop name which needs updating
   disInDb.DiscountProductName = "somename"; //change this to the correct prop name which needs updating

   _context.SaveChanges();
}