MVC3:从所选对象数组中删除数据库中的对象

时间:2012-01-06 08:07:41

标签: entity-framework nbuilder

我已成功选择了要删除的对象。但问题是当我从Object数组中删除一个项目时,它不会进行任何更改。我的代码如下:

我的数据库

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

有人能帮帮我吗? 你能告诉我,如何编写Lambda表达式而不是LinQ?

2 个答案:

答案 0 :(得分:0)

我认为在这种情况下你需要使用Delete而不是删除。

使用以下内容并查看其是否有效

db.DeleteObject(p)
db.SaveChanges()

答案 1 :(得分:0)

问题出在模型中。我使用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();
        }