La protezione contro la concorrenza delle transazioni (tipo di transazione; Transaction Isolation Level)

StackOverflow https://stackoverflow.com/questions/2551502

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).

È stato utile?

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
scroll top