En vrac-la suppression dans LINQ to entities
Est-il de toute façon en vrac-supprimer un tas d'objets correspondant à une requête donnée dans LINQ ou LINQ-to-Entités? Les seules références que j'ai pu trouver sont obsolètes, et il semble idiot de parcourir et supprimer manuellement tous les objets que je souhaite supprimer.
Vous devez vous connecter pour publier un commentaire.
La question est ancien (d'avant EF5 existé). Pour toute personne qui est à l'aide de EF5, EntityFramework.Étendu fait en un clin d'œil.
RemoveRange
stackoverflow.com/a/21468165/1876572Un temps, j'ai écrit un 4 partie blog de la série (Pièces Un, Deux, Trois et Quatre) couvrant le faire en bloc les mises à jour (avec une seule commande) dans le Cadre de l'Entité.
Bien que l'objectif de cette série a été mise à jour, vous pouvez certainement utiliser les principes de le faire supprimer.
De sorte que vous devriez être capable d'écrire quelque chose comme ceci:
Tout ce que vous devez faire est de mettre en œuvre les Supprimer() la méthode d'extension. Voir le post de la série pour des conseils sur le comment...
Espère que cette aide
Les Réponses que je vois ici sont Linq to Sql
DeleteAllOnSubmit est la partie du Système.Les données.Linq et ITable qui est Linq to Sql
Cela ne peut être fait avec Entity Framework.
Ayant dit que je n'ai pas encore trouvé de solution mais nouveau quand je ne
Pour ceux qui utilisent EF6 et souhaitez exécuter la ligne de requête SQL pour la suppression:
Je sais de DeleteAllOnSubmit méthode de contexte de données qui permet de supprimer tous les enregistrements de la requête. Il doit y avoir une optimisation sous-jacent depuis un grand nombre d'objets sont supprimés. Je ne suis pas sûr.
Je ne suis pas sûr de savoir comment efficace, il serait, mais vous pouvez essayer quelque chose comme ceci:
Vous pouvez écrire une procédure stockée que le fait de la supprimer et de l'appeler à partir de LINQ. Un ensemble à base de supprimer est probablement plus rapide dans l'ensemble, mais si il s'agit aussi de nombre d'enregistrements que pourrait causer des problèmes de verrouillage et vous pourriez avoir besoin d'un hybride de la boucle à travers les jeux d'enregistrements (peut-être à 2000 à l'heure, la taille dépend de votre conception de base de données, mais 2000 est un point de départ si vous trouvez le jeu de base effacez prend tellement de temps qu'il est touchant d'autres l'utilisation de la table) pour effectuer la suppression.
La suppression de données via Entity Framework repose sur l'utilisation de la DeleteObject méthode. Vous pouvez appeler cette méthode sur le EntityCollection pour la classe d'entité que vous souhaitez supprimer ou sur les dérivés ObjectContext. Voici un exemple simple:
Je ferais quelque chose comme:
Je ne pense pas qu'il existe un moyen de le faire sans boucle depuis Entity Framework fonctionne avec les Entités et la plupart du temps, ces moyens de collecte d'objets.
Dans cet exemple-je obtenir les enregistrements à supprimer, et un par un, de les attacher à l'ensemble des résultats alors demander de les enlever. Ensuite, j'ai 1 enregistrer les modifications.
ces est la méthode la plus rapide pour supprimer l'enregistrement de la DB à l'aide de EF
RemoveRange a été introduit dans EF6, il peut supprimer une liste d'objets. Super facile.