【问题标题】:MVC3: delete an object in an database from an array of selected objectsMVC3:从选定对象数组中删除数据库中的对象
【发布时间】:2012-01-06 08:07:41
【问题描述】:

我已成功选择要删除的对象。但问题是当我从 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?

【问题讨论】:

  • 这个问题实际上与 MVC 无关,而是关于您的 ERM 框架。您使用的是哪种数据库访问技术?
  • 那是您的实际数据库文件,您是如何访问数据库的?您使用的是实体框架或 linq to SQL 或其他一些 ORM?
  • 我正在使用实体框架(模型优先)。我有 2 个模型。产品型号,就是属性。 ProductRepository 使用 NBuilder 创建产品。

标签: entity-framework nbuilder


【解决方案1】:

我认为在这种情况下,您需要使用 Delete 而不是 remove。

使用以下方法,看看它是否有效

db.DeleteObject(p)
db.SaveChanges()

【讨论】:

  • 我已经从上一行中获得了。 Product p = db.Find(item.ProductId).. 它说 find 有一些无效的参数。然后 .DeleteObject 不会出现在 Intellisense 中。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 2019-11-02
    • 2012-05-12
    • 1970-01-01
    相关资源
    最近更新 更多