DbSet.Add () fügt DbSet eine einzelne Entität hinzu. Aber es gibt kein DbSet.AddRange (), um eine Liste von Entitäten hinzuzufügen. Gibt es eine Methode, die ich direkt von EF aufrufen kann, die mir erlaubt, eine Liste von Entitäten hinzuzufügen? Wenn nicht, gibt es einen Grund, warum EF eine solche Methode nicht bietet?
In EF6 sind sowohl DbSet.AddRange
als auch DbSet.RemoveRange
verfügbar.
Der Grund für die Implementierung besteht darin, die Leistung zu verbessern, indem Sie DetectChanges
für jede einzelne Hinzufügung oder Löschung einer Entität deaktivieren.
Weitere Details:
HINWEIS: Es gibt noch keine offizielle Dokumentation für diese Methode, da EF immer noch RC1 ist.
UPDATE: EF6 wurde veröffentlicht, und die offizielle Dokumentation für .AddRange () ist hier , aber die Erklärung dessen, was darin passiert, ist in den obigen Links.
Erangas Kommentar ist wohl wahr. Ich denke, dass das eigentliche Problem ist, was zu tun ist, wenn für eine Entität in der Liste die Schlüsseleigenschaft festgelegt ist, wenn der Schlüssel für die zugrunde liegende Tabelle eine Identitätsspalte ist:
Aus diesem Grund macht es nicht viel Sinn, AddRange () zur generischen Klasse DbSet zu implementieren. Wenn Sie etwas möchten, das Ihren Anforderungen entspricht, können Sie DbSet wie folgt erweitern
%Vor%Tags und Links .net entity-framework