Wie führe ich eine Massenaktualisierung / -löschung in Linq durch?

8

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:

%Vor%

oder

%Vor%

Ich kann das in Linq der brutalen Art und Weise innerhalb der Klasse Parent tun:

%Vor%

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?

    
Shaul Behr 23.12.2009, 12:58
quelle

5 Antworten

9

Sehen Sie sich diesen Link an: Es verwendet ExpressionTree: Ссылка [Fehlerhafter Link]

Ссылка [Wahrscheinlich der richtige]

    
pdiddy 23.12.2009, 14:55
quelle
14

In diesen Fällen können Sie die Methode DataContext.ExecuteCommand um SQL direkt in Ihrer Datenbank auszuführen. Zum Beispiel:

%Vor%     
Konamiman 23.12.2009 13:00
quelle
2

Schauen Sie sich die Ссылка Massenoperation mit linq an.

    
ivos 05.01.2010 16:33
quelle
1

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%

Ссылка

    
Imran Chaudhary 16.03.2017 19:03
quelle
-1

Versuchen Sie es

%Vor%     
amit singh 11.04.2014 12:06
quelle

Tags und Links