Wie konnte ich Batch update/insert
mit SQLCommand
erreichen? Ich wollte SQLCommand
text dynamisch in for
loop von MyObject[]
in C # mit 10 SQLParameter
Im Falle von Bulk insert
muss ich nach jedem Datensatz suchen, der bereits existiert oder nicht. d. h.
if not Exists(select pkid from table1 where fkid1=@fkid1 and fkid2=@fkid1)
begin
end
Dies ist von C # zu tun. Keine gespeicherte Prozedur in db
Nur das Anhängen von CommandTexts
an einen großen Stapelbefehl ist nicht so nützlich wie es scheint.
Der Hauptvorteil von vorbereiteten Anweisungen in C # besteht darin, dass die Arbeitslast in der Datenbank beim Erstellen des Befehls ausgeführt wird. Nicht, wenn Sie es [z. mit ExecuteNonQuery()
- die den Befehl nur ausführt, wenn Sie kein Transaktionsobjekt erstellt haben].
Um dies zu vermeiden und die Arbeitslast in der Datenbank nur einmal für alle Ihre Anweisungen zu erstellen, ist es wesentlich besser, ein Objekt Transaction
zu erstellen und diese Transaktion zu committen. Dann werden alle Befehle ohne weitere Arbeitslast in der Datenbank ausgeführt.
Dies wäre eine bessere Einstellung:
%Vor% Sie können Ihre Werte als kommagetrennte Zeichenfolge in gespeicherte Prozedurparameter senden und sie dann mit Split()
sql function aufteilen.
probiere das
aus %Vor%Ihre gespeicherte Prozedur wird so aussehen
%Vor% Sie können beliebig viele Parameter mit demselben Ansatz in Insert
oder Update
Das ist meine schnelle Lösung für das Testen von Batch-Transaktionen.
%Vor%