Ich habe 2 Linq2Sql-Klassen: Parent
und Child
. Ich möchte Dinge wie das Entfernen aller Kinder für einen Elternteil oder das Aktualisieren aller Kinddatensätze erledigen. In SQL hätte ich geschrieben:
oder
%Vor% Ich kann das in Linq der brutalen Art und Weise innerhalb der Klasse Parent
tun:
und
%Vor%Aber angesichts der inhärenten Leistungseinbuße von Linq auf ForEach-Schleifen scheint dies ein sehr ineffizienter Weg zu sein, Dinge zu tun. Gibt es eine Möglichkeit, das gewünschte Ende zu erreichen, das genau eine Abfrage auslöst?
In diesen Fällen können Sie die Methode DataContext.ExecuteCommand um SQL direkt in Ihrer Datenbank auszuführen. Zum Beispiel:
%Vor%Aktualisieren und Löschen
Eine aktuelle Einschränkung des Entity Framework besteht darin, dass Sie eine Entität zuerst aktualisieren müssen, um sie zu aktualisieren oder zu löschen. Außerdem muss das Objekt für einzelne Löschvorgänge abgerufen werden, bevor es gelöscht werden kann, sodass zwei Aufrufe an die Datenbank erforderlich sind. Um dieses Problem zu lösen, müssen wir das aktuelle Entitätsframework mit EntityFramework.Extended erweitern. EntityFramework.Extended verfügt über nützliche Funktionen wie Batch-Aktualisierung und -Löschung, Überwachungsprotokoll, Cache für Abfrageergebnisse, Künftige Abfragen. Beim Aktualisieren und Löschen von Batches müssen keine Entitäten abgerufen und geladen werden, bevor sie geändert werden. Hier sind ein paar Zeilen Code, um zu demonstrieren, wie zu löschen, zu aktualisieren.
Installieren über nuget
PM & gt; Install-Paket EntityFramework.Extended
Aktualisieren
Szenario: Aktualisieren Sie Kunden mit dem Land USA. Wenn wir dies ohne Erweiterungen tun, müssen wir alle Kunden, die das Land USA haben, abholen, die Liste modifizieren und mit Loops aktualisieren. Mit Entity Framework.Exdded müssen wir nicht die Liste der Kunden abrufen, einfach hinzufügen, wo Bedingung, Update-Daten setzen und Abfrage ausführen.
%Vor%Tags und Links .net c# linq linq-to-sql