Quando si salvano i dati nel database ho utilizzato TransactionScope con IsolationLevel impostato su Serializable.Modifica TransactionScope IsolationLevel dopo aver completato la transazione
TransactionOptions options = new TransactionOptions
{
IsolationLevel=IsolationLevel.Serializable
};
using (var transaction = new TransactionScope(TransactionScopeOption.Required,options))
{
transation.Complete();
}
Ora dopo che l'esecuzione è finita, voglio cambiare TransactionScopeIsolationLevel.
Modifica
Quello che ho capito è questo, se IsolationLevel impostato a Serializable poi, dopo il completamento della transazione, l'oggetto di connessione è chiusa e ritornare al pool di connessione e quando qualche altra richiesta arriva si recuperare quell'oggetto connessione da il pool e quindi effettuato dal precedente IsolationLevel. Quindi voglio cambiare il livello di isolamento al valore predefinito dopo ogni transazione.
Grazie per la risposta, sono pronto ad accettare altre opzioni migliori, ma come si suggerisce di aprire tutte le connessioni con transazioni esplicite, non pensate che questo porterà un sacco di spese generali nel sistema. Ho un'applicazione enorme centinaia di endpoint ma ci sono solo un paio di scenari in cui sto usando TransactionScope. Cosa suggerisci per queste cose? – MegaMind
Il sovraccarico della transazione è quasi nulla, poiché tutte le dichiarazioni utilizzano comunque una transazione implicita .; Se non riesci a migrare tutto il tuo approccio potrebbe effettivamente essere una buona idea. Un trucco, ma una soluzione pragmatica. Non riesco a vedere grandi problemi con esso. – usr
conn.ExecuteCommand ("SET TRANSACTION ISOLATION LEVEL XXX"); lavoro? Qualcuno l'ha provato? – hazimdikenli