Loaded Frage, eine endgültige Antwort ist nicht möglich, da wie @ LasseV.Karlsen SqlConnection erklärt hat, ist nicht Thread-sicher so Verhalten unberechenbar sein wird . Ich habe in der Vergangenheit ähnliche Szenarien versucht und ist gescheitert. Hier ist, was ich denke, wird mit den Parametern in Ihrer Frage passieren.
Verarbeitet SqlConnection Abfragen parallel?
Nein, es weiß nicht wie, weil es nicht für diese Aufgabe entwickelt wurde. Obwohl die Tatsache, dass es möglich ist, einen Prozess zu bauen, um es auf diese Weise zu verwenden, verlockend ist.
werden diese Abfragen nacheinander Ja
ausgeführt werden. Die Abfragen werden von der SQL-Engine in der Reihenfolge ausgeführt, in der sie empfangen wurden. Obwohl Ihr Verbindungsobjekt wahrscheinlich nicht weiß, an welchen Thread die Ergebnisse weitergegeben werden sollen, erhalten Sie den gefürchteten "Objekt-Referenzfehler".
gibt es eine Chance, dass diese Isolationsstufe auf andere Abfragen anwenden
Ja. Wenn Sie die Isolationsstufe des Transaktionsobjekts ändern, das Ihrer SqlConnection zugewiesen ist, und einer Ihrer Threads versucht, diese Verbindung zu verwenden, wird diese Isolationsstufe standardmäßig verwendet. Der Zeitpunkt, an dem ein sekundärer Thread dies tut, liegt zu diesem Zeitpunkt außerhalb Ihrer Kontrolle. Sie können zuweisen eine Transaktion pro Befehl (und damit eine eindeutige Isolationsstufe wie gewünscht erreichen), aber Sie werden immer noch das Problem der Verbindung nicht threadsicher sein.
SqlConnection ist nicht Thread-sicher. Sie sollten es nicht für mehrere Threads verwenden. Sie sollten stattdessen eine Verbindung pro Thread erstellen. –
Die einzige sichere Methode, ein SqlConnection-Objekt für mehrere Threads zu verwenden, besteht darin, es nicht gleichzeitig bei mehr als 1 zu verwenden. Und ja, jeder Status oder jede Konfiguration, die Sie an einem Thread ändern, wird zu allen folgenden Threads "überlaufen" Weise. –
@ LasseV.Karlsen Wie wäre es mit async/erwarten? Ich denke, THX-1138 bezieht sich auf die Möglichkeit, dass mehrere Abfragen gleichzeitig unter derselben Verbindung ausgeführt werden. –