Edycja elementu

0

Cześć.
Mam pytanie wiecie może dlaczego nie edytuje mi produktu ?

        public void EditProduct(Product product)
        {
            try
            {
                db.Entry(product).State = System.Data.Entity.EntityState.Modified;
                db.SaveChanges();
            }
            catch(Exception ex)
            {

            }


        }
[HttpGet]
        public ActionResult Edit(int? id)
        {
            if(id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Product product = _service.GetProduct((int)id);
            if (product == null)
            {
                return HttpNotFound();
            }
            PanelViewModel vm = new PanelViewModel()
            {
                Categories = _cato.GetCategories(),
                Product = product
            };
            return View(vm);

        }

        [HttpPost]
        public ActionResult Edit(Product product)
        {
            if(ModelState.IsValid)
            {
                _service.EditProduct(product);
                return RedirectToAction("Index", "Home");
            }
            else
            {
                PanelViewModel vm = new PanelViewModel()
                {
                    Categories = _cato.GetCategories(),
                    Product = product
                };
                return View(vm);
            }
        }
0

Nie widzę jakiegoś oczywistego błędu, co się dzieje dokładnie?

Sprawdziłeś, czy po wykonaniu akcji w bazie są stare wartości (na widoku może w którymś miejscu masz coś scacheowane).

0

No właśnie nie gdy wraca do Indexu po edycji nic sie nie zmienia dane w bazie i wgl nic nie cashowalem

1
Michał Warmuz napisał(a):
public void EditProduct(Product product)
{
   try
   {
       db.Entry(product).State = System.Data.Entity.EntityState.Modified;
       db.SaveChanges();
   }
   catch(Exception ex)
   {
   }
}

Dlaczego umieściłeś w bloku try...catch kod modyfikujący rekord? Czy ten kod wyrzuca wyjątek, a Ty w taki sposób "rozwiązałeś" problem?

0

Tak dokładnie wywalało wyjątek System.Data.Entity.Infrastructure.DbUpdateConcurrencyException: „Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded.

0

Tutaj jest cały projekt
https://github.com/Michal-Warmuz/Shop

1

No nie działa, bo tak jak napisał @Burmistrz - do akcji Edit przekazuje produkt, ale bez ustawionego id.
To skąd EF ma wiedzieć który akurat rekord w tabeli chcesz zaktualizować?

1 użytkowników online, w tym zalogowanych: 0, gości: 1