Comment supprimer une ou plusieurs lignes de ma table à l'aide de Linq to Entities * sans * récupérer les lignes en premier?
-
05-07-2019 - |
Question
Je comprends que je peux mapper une procédure stockée de suppression sur la méthode de suppression pour un type particulier.
Toutefois, cela nécessite de transmettre un objet récupéré à la méthode DeleteObject
de mon contexte.
C'est déjà assez grave, mais que se passe-t-il si je veux supprimer 2000 lignes? Puis-je faire cela avec Linq to Entities sans d'abord récupérer ces 2000 lignes de la base de données et en passant par une boucle appelant DeleteObject
?
Si cette fonctionnalité n'existe pas dans Linq to Entities et que vous savez que cela est le cas, indiquez-le simplement et explorons les autres options!
S'il n'existe pas directement, est-ce que je pourrais le faire en canalisant un processus stocké via Linq vers les entités?
La solution
Oui, vous pouvez le faire. De ce conseil :
// Create an entity to represent the Entity you wish to delete
// Notice you don't need to know all the properties, in this
// case just the ID will do.
Category stub = new Category { ID = 4 };
// Now attach the category stub object to the "Categories" set.
// This puts the Entity into the context in the unchanged state,
// This is same state it would have had if you made the query
ctx.AttachTo("Categories", stub);
// Do the delete the category
ctx.DeleteObject(stub);
// Apply the delete to the database
ctx.SaveChanges();
Voir le conseil complet pour plus de détails et de complications.