Fetch e query si comportano in modo diverso se li si utilizza all'interno di una transazione. Avevo un caso d'uso in cui avevo bisogno di aggiornare diverse tabelle in una transazione, ma avevo bisogno di recuperare alcuni dati da una tabella di riferimento nel mezzo della sequenza.
Quando ho recuperato i dati con query e successive inserti o aggiornamenti fallito con un'InvalidOperationException: "C'è già un DataReader aperto associato con questo comando che deve essere chiuso prima"
La soluzione era quella di sostituire la query con un recupero e sono stato in grado di completare la sequenza.
Il pseudocodice per questo è:
BeginTransaction Update Tbl1 Update Tbl2 Query RefTblA ## Changed Query to Fetch to avoid: '...already an open DataReader..." exception Update Tbl3 using data from RefTblA CompleteTransaction
fonte
2017-07-05 13:37:08
E come è quello relativo al server sql? Controlla la documentazione di petapoco. – TomTom