2012-01-06 86 views
0

我已成功選擇要刪除的對象。但問題是當我從Object數組中刪除一個項目時,它沒有做任何改變。我的代碼如下以下..MVC3:從所選對象數組中刪除數據庫中的對象

我的數據庫

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?

+1

這個問題實際上並不是關於MVC它關於您的ERM框架。你使用哪種數據庫訪問技術? – 2012-01-06 08:18:44

+0

我正在使用.sdf。 – 2012-01-06 08:34:24

+0

這就是你的實際數據庫文件,你如何訪問數據庫?你使用實體框架或LINQ到SQL或其他ORM? – 2012-01-06 08:42:11

回答

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

我認爲在這種情況下,您需要使用刪除而不是刪除。

使用下面,看看它是否工作

db.DeleteObject(p) 
db.SaveChanges() 
+0

我已經從上一行中獲得了。 Product p = db.Find(item.ProductId)..它說find有一些無效的參數。然後.DeleteObject不會出現在Intellisense中。 – 2012-01-06 08:33:47