2009-09-30 7 views
1

Je construis un site de commerce électronique avec des produits dans plusieurs catégories. En conséquence, j'ai une table Produits, une table Catégories et une table de jonction/jonction ProdCat qui contient toutes les combinaisons productId/CategoryId.Linq to Entities - Supprimer d'un lien/table de jonction

Lorsque vous effectuez une mise à jour à l'aide de Linq To Entities (que j'utilise aujourd'hui pour la première fois), je suis à court de ressources. Je dois d'abord supprimer toutes les entrées pour un identifiant de produit donné, puis effectuer une insertion de tous les détails pertinents. Je pense que j'ai l'insert vers le bas mais quelqu'un peut-il me donner un exemple de la façon de faire la suppression?

J'ai trawled le net et il semble que Linq to Entities soit considéré comme la «voie à suivre» en termes de Linq To SQL mais il semble aussi que ce n'est pas aussi facile à apprendre que Linq To Sql.

Toute aide est appréciée.

Merci.

Répondre

0

Vous ne pouvez pas supprimer dans LINQ-to-Anything. Pas dans LINQ to SQL, pas dans LINQ to Entities, et pas dans LINQ to Objects.

Pour supprimer dans EF, vous:

Context.DeleteObject(someObject); 

Donc, pour supprimer tout par Id, vous feriez:

var q = from entry in Context.SomeEntitySet 
     where entry.Product.Id == someId 
     select entry; 
foreach (var entry in q) 
{ 
    Context.DeleteObject(entry); 
} 
Context.SaveChanges(); 
1

Je suis tombé sur un problème similaire aujourd'hui avec des capteurs, et sensorGroups la table de jonction qui crée la relation plusieurs-à-plusieurs entre les deux. La solution que j'ai trouvée est:

var delGroup = db.SensorGroups.Single(g => g.GroupId == groupId); 

foreach (var sensor in delGroup.Sensors.ToList()) 
{ 
    delGroup.Sensors.Remove(sensor); 
} 

db.SaveChanges(); 
Questions connexes