2009-08-14 6 views
3

J'ai une liste qui contient les identifiants PK d'un certain nombre d'objets dans une collection que je veux supprimer. Est-ce que quelqu'un sait comment écrire une seule requête pour récupérer ces objets?Entity Framework: Suppression de plusieurs objets requête

Par exemple:

IList<int> objectList; // populated with int Primary key Ids 

using (MyEntities context = new MyEntities()){ 

    var result = context.MyObjectCollection.Where(obj=> obj.ID IN objectList); 

    foreach(var item in result){ 
     context.DeletObject(item); 
    } 
    context.SaveChanges(); 
} 

Toute aide serait grandement appréciée!

Répondre

1
var result = context.MyObjectCollection.Where(obj=> objectList.Contains(obj.ID)); 
1

réponse de Mel ne fonctionne pas parce que dans .NET 3.5 SP1 EF ne sait pas comment traduire list.Contains (...) dans T-SQL. Bien que cela arrive en 4.0.

La solution consiste à produire manuellement une grande ou requête à savoir

Where(obj => obj.ID == item1 || obj.ID == item2 ....) 

Voici une astuce que j'ai écrit qui fait aussi simple que cela:

Tip 8 - How to write where IN style queries using LINQ to Entities

Hope this helps

Alex James

Entity Framework Te am - Lire mon Entity Framework Tips

0

http://efe.codeplex.com

this.Devices.Update(o => new Device() { LastOrderRequest = DateTime.Now, Description = "teste" }, o => o.Id == 1); 
Questions connexes