Hallo Alexander
Kommt drauf an. Wie schon gesagt, vielleicht einfach mit einer Staging-Tabelle arbeiten.
Je nach Menge der Daten kannst du die in dem Worker-Thread puffern und über eine Bulk-Operation auf einmal in die Tabellen schreiben. Die Performance bei Bulk-Operationen ist dabei so hoch dass es den Client nicht stören sollte. Hierzu kannst du die Daten entweder die
SqlBulkCopy Klasse verwenden welche auf BCP aufsetzt, oder Table-Valued Parameter (TVPs) verwenden. Zu TVPs habe ich vor ein paar Monaten einige Tests gemacht und komme dabei mit 400.000 Datensätzen auf eine Laufzeit von 7 Sekunden. Siehe:
Table-Valued Parameters - A Performance Comparison
Zuletzt kannst du noch mit TRANSACTION LEVEL SNAPSHOT arbeiten. Das erfordert in deiner aktuellen Implementierung keine Anpassungen, ist aber teuer für den SQL Server da er alle Requests kopieren muss. Dazu muss über
ALTER DATABASE Sandbox SET ALLOW_SNAPSHOT_ISOLATION OFF erstmal Snapshot auf der Datenbank erlaubt werden und danach über
SET TRANSACTION ISOLATION LEVEL SNAPSHOT; die entsprechende Transaktion in den Snapshot-Modus versetzt werden. Allerdings kann ich dir hier jetzt nicht sagen wie du das in deinem O/R-Mapper aktivieren kannst.
Grüße
Flo