Ich verwende EF6
und wegen der niedrigen Geschwindigkeit von AddRange()
Methode muss ich BulkInsert
verwenden. Also habe ich das NuGet-Paket von BulkInsert für EF6 über hier hinzugefügt.
Als erstes habe ich nach dem Hinzufügen von dll
s diese Warnung erhalten:
Gefunden Konflikte zwischen verschiedenen Versionen der gleichen abhängigen Versammlung. Setzen Sie die Eigenschaft "AutoGenerateBindingRedirects" auf true in der Projektdatei.
Ich habe eine List
aller meiner Contact
Entitäten gemacht, nämlich contactsToInsert , die hinzugefügt werden müssen (Meine Kontakte haben auch einen Fremdschlüssel in einer anderen Tabelle). Als ich versuchte, den folgenden Code auszuführen, erhalte ich ein KeyNotFoundException
, das behauptet " Der angegebene Schlüssel war nicht im Wörterbuch vorhanden ".
Hinweis: Ich verwende das BulkInsert in einem BackgroundWorker
. Könnte dies möglicherweise die Ursache für das Problem sein, das von diesem Fix beurteilt wird?
StackTrace:
%Vor% Mit Änderungen am Code in diesem Blogbeitrag , hier ist, was für meine Code First Fluent-API-Einrichtung funktionierte, nachdem der gleiche "The given key was not present in the dictionary"
-Fehler bei BulkInsert()
aufgetreten ist. Die einzige Abhängigkeit hier ist die ToDataTable()
Erweiterungsmethode, die im DataExtensions
Snippet des oben genannten Posts gefunden wird.
Der relevante Teil ist die GetColumnMappings()
-Methode, die den bevorzugten Namen der POCO-Klasseneigenschaft (den, den Sie im Code angegeben haben) als Quellspaltenname (in der aufgezählten-gedrehten-Datentabelle) und Verknüpft es mit dem Namen des Metadaten-Members (dem Namen der DB-Spalte) als Zielspaltenname.
GetColumnMappings ():
%Vor%Vollständiger Code:
%Vor%Ok, ich hatte den gleichen Fehler konnte keine Antworten online finden, so musste tief suchen, hier ist, was ich dachte:
Wenn Ihre Entität geerbt ist und die untergeordneten Entitäten, falls nicht als Teil des DBSet definiert, einen Fehler dieser Art kennzeichnet, ist zweitens nicht sicher, warum sie den neuen DbContext nur mit der verwandten Entität erwartet, die für bulkInsertions verwendet wird andere Entitäten gibt es den gleichen Fehler.
Also ist es die 2 Ursache, also musste ich diese beide reparieren, und wie ein Pferd laufen !!!
ist es wert, es zu versuchen, also versuchen Sie es
Die "BulkInsert" -Bibliothek ist sehr schnell, aber nicht sehr flexibel und wird nicht unterstützt.
Es unterstützt nicht alle Arten der Vererbung (TPC, TPT) und hat Probleme mit der Spaltenzuordnung.
Das Problem, das Sie haben, ist aus einem dieser Gründe.
Haftungsausschluss : Ich bin der Eigentümer des Projekts Entity Framework Extensions
Diese Bibliothek ist die ultimative Bibliothek für die Leistung und ermöglicht:
Alle Vererbung und Assoziation werden unterstützt.
Beispiel:
%Vor%Tags und Links c# entity-framework bulkinsert