La protezione contro la concorrenza delle transazioni (tipo di transazione; Transaction Isolation Level)
-
23-09-2019 - |
Domanda
componente di livello intermedio eseguirà le routine di accesso ai dati in applicazione. La componente chiamerà diverse procedure di SQL Server memorizzato per eseguire gli aggiornamenti del database. Tutte queste chiamate di procedura gestita sotto il controllo di una singola transazione. Il codice per il livello intermedio attuerà i seguenti oggetti:
SqlCommand comm = connection.CreateCommand();
SqlTransaction trans;
Come devo aggiungere codice al componente per specificare il massimo livello possibile di protezione contro tali errori (due utenti cercano di aggiornare gli stessi dati contemporaneamente).
Soluzione
si utilizza IsolationLevel
:
using (SqlConnection con = new SqlConnection(connectionString))
{
using (SqlTransaction tran = con.BeginTransaction(IsolationLevel.Serializable))
{
SqlCommand cmd = con.CreateCommand();
// etc...
con.Open();
}
}
Sarà comunque necessario per catturare le eccezioni SQL appropriate ...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow