Il me semble que je dois récupérer un objet avant de le supprimer avec un framework d'entité comme ci-dessous
var customer = context.Customers.First(c => c.Id == 1);
context.DeleteObject(customer);
context.Savechanges();
J'ai donc besoin de frapper la base de données deux fois. Y a-t-il un moyen plus simple?
Réponses:
Dans Entity Framework 6, l'action de suppression est
Remove
. Voici un exemplela source
Attach
? Pourquoi pas justeRemove
etSaveChanges
?Identique à @Nix avec une petite modification pour être fortement typé:
Si vous ne souhaitez pas le rechercher, créez simplement une entité, puis supprimez-la.
la source
Question similaire ici .
Avec Entity Framework, il existe EntityFramework-Plus (bibliothèque d'extensions).
Disponible sur NuGet. Ensuite, vous pouvez écrire quelque chose comme:
Il est également utile pour les suppressions groupées.
la source
Si vous ne souhaitez pas le rechercher, créez simplement une entité, puis supprimez-la.
la source
J'utilise le code suivant dans l'un de mes projets:
De cette façon, il interrogera la base de données deux fois uniquement si une exception se produit lors de la tentative de suppression de l'élément avec l'ID spécifié. Ensuite, si l'élément n'est pas trouvé, il renvoie un message significatif; sinon, il renvoie simplement l'exception (vous pouvez gérer cela d'une manière plus adaptée à votre cas en utilisant différents blocs catch pour différents types d'exceptions, ajoutez plus de vérifications personnalisées en utilisant des blocs if, etc.).
[J'utilise ce code dans un projet MVC .Net Core / .Net Core avec Entity Framework Core.]
la source
La requête SQL brute est le moyen le plus rapide, je suppose
la source
La réponse de dwkd a principalement fonctionné pour moi dans le cœur d'Entity Framework, sauf lorsque j'ai vu cette exception:
Pour éviter l'exception, j'ai mis à jour le code:
la source
Une version plus petite (par rapport aux précédentes):
la source
Cette réponse est en fait tirée du cours de Scott Allen intitulé ASP.NET MVC 5 Fundamentals. J'ai pensé partager parce que je pense que c'est un peu plus simple et plus intuitif que toutes les réponses ici déjà. Notez également que selon Scott Allen et d'autres formations que j'ai effectuées, la méthode find est un moyen optimisé de récupérer une ressource de la base de données qui peut utiliser la mise en cache si elle a déjà été récupérée. Dans ce code, collection fait référence à un DBSet d'objets. L'objet peut être n'importe quel type d'objet générique.
la source