MVC3: удалить объект в базе данных из массива выбранных объектов - PullRequest
0 голосов
/ 06 января 2012

Я успешно выбрал объекты, которые хочу удалить. Но проблема в том, что когда я удаляю элемент из массива объектов, он не вносит никаких изменений. Мой код следующий ниже ..

Моя база данных

public List<Product> db = new ProductRepository().GetProducts();

Здесь показаны все продукты с флажком ..

public ActionResult MultipleDeletes()
        {
            return View(db);
        }

При отправке «Кнопка с именем Удалить» у меня возникла проблема.

[HttpPost]
        public ActionResult MultipleDeletes(int[] selectedProducts)
        {  
            var del_products  = from x in selectedProducts
                           from y in db
                           where y.ProductId == x
                           select y;

            foreach (var item in del_products)
            {
                //Product p = db.Find(item.ProductId);
                //db.Remove(p);
                //db.SaveChanges();
            }                    

            return View(db);
        }

Может ли кто-нибудь мне помочь? Вы также можете сказать мне, как написать лямбда-выражение вместо LinQ?

Ответы [ 2 ]

0 голосов
/ 07 января 2012

Проблема была в модели. Я использовал NBuilder .. поэтому он не сохранил данные Я построил DbContext. Тогда это сработало. Решение это ..

public ProductDBContext db = new ProductDBContext();


        [HttpPost]
        public ActionResult MultipleDeletes(int[] selectedProducts)
        {
            foreach (int item in selectedProducts)
            {
               Product product = db.Where(p => p.ProductId == item).SingleOrDefault();
               db.Remove(product);
               db.SaveChanges();
            }
          return View();
        }
0 голосов
/ 06 января 2012

Я думаю, что в этом случае вам нужно использовать Удалить, а не удалить.

Используйте следующее и посмотрите, работает ли оно

db.DeleteObject(p)
db.SaveChanges()
...