2012-01-06 5 views
0

削除したいオブジェクトを選択しました。しかし、問題は、オブジェクト配列から項目を削除しても変更されないことです。私のコードは、「削除という名前のボタン」を提出..に私のデータベースここ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); 
     } 

助けてもらえますか? LinQの代わりにラムダ式を書く方法を教えていただけますか?

+1

この質問は実際にはあなたのERMフレームワークについてです。どのデータベースアクセス技術を使用していますか? –

+0

私は.sdfを使用しています。 –

+0

あなたの実際のデータベースファイルは何ですか、あなたはどのようにデータベースにアクセスしていますか?エンティティフレームワークを使用しているのですか、SQLや他のORMにlinqを使用していますか? –

答えて

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に表示されません。 –

関連する問題