Ich muss mehrere Datensätze in Sqlserver erstellen, jeder mit dem gleichen Wert in Spalte A, aber mit einem eindeutigen Wert in Spalte B. Ich habe die Werte für Spalte B in einem Array.
Ich verwende VS2008, aspnet, c# 3.5, sqlserver 2005.
Bin ich besser dran
Option 1.
1 Aufruf einer gespeicherten Prozedur in Sqlserver aus c#-Code, und dann die gesamte Verarbeitung Arbeit in der gespeicherten Prozedur in tsql?
Dies würde beinhalten, kombinieren alle Werte in der c#-Array in eine durch Komma getrennte Zeichenfolge und Übergabe der Zeichenfolge an tsql als Parameter, dann Schleife und brechen die Zeichenfolge in einzelne Werte und einen Datensatz für jeden ein, alle innerhalb einer gespeicherten Prozedur einfügen.
So wie ich das sehe, würde dies bei Bedarf ein einfaches Rollback bedeuten, aber eine sehr umständliche String-Verarbeitung in tsql.
Oder
Option 2.
Doing die Schleife in c# und Übergabe der Daten als sqlparams von c# einen Datensatz zu einer Zeit, um eine gespeicherte proc einfügen jeden Datensatz.
D.h., foreach ( int key in myarray) einen Datensatz einfügen
Ich könnte diesen Code im Schlaf ausführen, aber wie könnte ich einen Rollback durchführen, wenn mitten in der Verarbeitung etwas passiert? Und sollte ich die Schleife in einer einzigen connection.open und connection.close ausführen?
Hat jemand eine andere Möglichkeit, dies zu tun?