Es scheint mir, dass ich ein Objekt abrufen muss, bevor ich es mit dem Entity Framework wie unten lösche
var customer = context.Customers.First(c => c.Id == 1);
context.DeleteObject(customer);
context.Savechanges();
Ich muss also zweimal auf die Datenbank klicken. Gibt es einen einfacheren Weg?
entity-framework
entity
Jeff
quelle
quelle
Antworten:
In Entity Framework 6 lautet die Löschaktion
Remove
. Hier ist ein Beispielquelle
Attach
? Warum nicht einfachRemove
undSaveChanges
?Das gleiche wie @Nix mit einer kleinen Änderung, die stark eingegeben werden muss:
Wenn Sie nicht danach fragen möchten, erstellen Sie einfach eine Entität und löschen Sie sie.
quelle
Ähnliche Frage hier .
Mit Entity Framework gibt es EntityFramework-Plus (Erweiterungsbibliothek).
Verfügbar bei NuGet. Dann können Sie etwas schreiben wie:
Es ist auch nützlich für Massenlöschungen.
quelle
Wenn Sie nicht danach fragen möchten, erstellen Sie einfach eine Entität und löschen Sie sie.
quelle
Ich verwende den folgenden Code in einem meiner Projekte:
Auf diese Weise wird die Datenbank nur zweimal abgefragt, wenn beim Versuch, das Element mit der angegebenen ID zu entfernen, eine Ausnahme auftritt. Wenn das Element dann nicht gefunden wird, wird eine aussagekräftige Nachricht zurückgegeben. Andernfalls wird die Ausnahme nur zurückgeworfen (Sie können dies auf eine Weise behandeln, die besser zu Ihrem Fall passt, indem Sie verschiedene Catch-Blöcke für verschiedene Ausnahmetypen verwenden, weitere benutzerdefinierte Prüfungen mit if-Blöcken hinzufügen usw.).
[Ich verwende diesen Code in einem MVC .Net Core / .Net Core-Projekt mit Entity Framework Core.]
quelle
Raw SQL-Abfrage ist wohl der schnellste Weg
quelle
Die Antwort von dwkd funktionierte hauptsächlich für mich im Entity Framework-Kern, außer als ich diese Ausnahme sah:
Um die Ausnahme zu vermeiden, habe ich den Code aktualisiert:
quelle
Eine kleinere Version (im Vergleich zu früheren):
quelle
Diese Antwort stammt aus Scott Allens Kurs mit dem Titel ASP.NET MVC 5 Fundamentals. Ich dachte, ich würde teilen, weil ich denke, dass es etwas einfacher und intuitiver ist als jede der Antworten hier bereits. Beachten Sie auch, dass die Suchmethode laut Scott Allen und anderen von mir durchgeführten Schulungen eine optimierte Methode zum Abrufen einer Ressource aus einer Datenbank ist, die Caching verwenden kann, wenn sie bereits abgerufen wurde. In diesem Code bezieht sich die Sammlung auf ein DBSet von Objekten. Objekt kann ein beliebiger generischer Objekttyp sein.
quelle