So fügen Sie eine Liste von Entitäten zu DbSet hinzu

8

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?

    
hshen 12.02.2012, 01:49
quelle

2 Antworten

11

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.

    
JotaBe 01.10.2013 11:43
quelle
6

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:

  • Eine Ausnahme auslösen? ODER
  • Schlüssel auf Null setzen, damit eine neue Entität mit anderem Schlüssel eingefügt wird? ODER
  • Aktualisieren Sie die Entität mit demselben Schlüssel?

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%     
hshen 13.02.2012 17:00
quelle

Tags und Links