Masseneinfügung mit SqlBulkCopy aus einer Liste von Objekten
Wenn Sie vor der Aufgabe stehen, eine umfangreiche Einfügung aus einer Liste von Objekten in eine Datenbank durchzuführen Bei einfachen Objekten könnte man sich fragen, ob man SqlBulkCopy verwenden sollte, um dieses Kunststück zu erreichen. Es stellt sich die Frage, ob für einen solchen Vorgang eine benutzerdefinierte Implementierung der IDataReader-Schnittstelle erforderlich ist.
Diese Frage kann leicht beantwortet werden, indem die Funktionen von FastMember untersucht werden. Durch den Einsatz dieser Bibliothek können Sie Masseneinfügungen ausführen, ohne dass eine zwischengeschaltete DataTable erforderlich ist. Dieser Ansatz vereinfacht nicht nur das Verfahren, sondern erhöht auch die Leistung, wie empirische Tests belegen.
In der Praxis sieht die Implementierung mit FastMember wie folgt aus:
using(var bcp = new SqlBulkCopy(connection)) using(var reader = ObjectReader.Create(data, "Id", "Name", "Description")) { bcp.DestinationTableName = "SomeTable"; bcp.WriteToServer(reader); }
Bemerkenswert ist, dass ObjectReader dies kann unterstützt sowohl generische als auch nicht generische Datenquellen. Darüber hinaus ist die Angabe der Mitgliedsnamen im Voraus keine zwingende Voraussetzung. Die Nutzung der ColumnMappings-Funktion von SqlBulkCopy kann sich jedoch in Situationen als vorteilhaft erweisen, in denen eine manuelle Angabe weggelassen wird.
Das obige ist der detaillierte Inhalt vonKann FastMember den Bedarf an IDataReader mit SqlBulkCopy für Masseneinfügungen aus einer Liste von Objekten eliminieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!