Architettura e novità di ADO.NET 2.0

4 pagine in totale: <<Indietro 1 2 [3] 4 Avanti >>

ADO.NET 2.0 e SQL Server 2005

Il managed provider relativo a SQL Server presenta alcune caratteristiche strettamente collegate alle novità introdotte con SQL Server 2005.

Multiple Active Result Set

Con SQL Server 2005 e ADO.NET 2.0 è possibile aprire contemporaneamente più resultset nell'ambito della stessa connessione (MARS). La situazione più frequente si riferisce al caso in cui si utilizzi un comando per eseguire un aggiornamento mentre si scorre un resultset.

using(SqlConnection conn = new SqlConnection(connectionString))
{
  conn.Open();
  SqlCommand selectCommand = new SqlCommand(selectCommandText, conn);

  // Esecuzione del primo comando
  SqlDataReader reader = selectCommand.ExecuteReader();

  while(reader.Read())
  {

    // ...

    SqlCommand updateCommand = new SqlCommand(updateCommandText, conn);
    updateCommand .Parameters.AddWithValue("@Id", reader.GetInt32(0));
    updateCommand .Parameters.AddWithValue("@FieldToUpdate", newValue);

    // Esecuzione del secondo comando
    updateCommand .ExecuteNonQuery();
  }

  reader.Close();
  }
}

In ADO.NET 2.0 la funzionalità MARS è abilitata di default. In ogni caso è possibile disattivarla impostando il valore del parametro MultipleActiveResultSets della stringa di connessione a false.

<connectionStrings>
  <add name="Sample"
    connectionString="...; MultipleActiveResultSets=false;"
    providerName="System.Data.SqlClient" />
</connectionStrings>
SqlDependency

In ASP.NET la caratteristica fondamentale del caching è la possibilità di invalidare un elemento al verificarsi di determinate condizioni. Quello della dipendenza da database è da sempre stato uno dei problemi più sentiti dagli sviluppatori ASP.NET. La classe SqlDependency contenuta nel namespace System.Data.SqlClient risolve il problema una volta per tutte.

I cambiamenti vengono verificati in due modalità diverse a seconda della versione di SQL Server.

  • Con SQL Server 7/2000 viene effettuato il polling dall'applicazione verso il database per verificare gli eventuali cambiamenti.

  • Con SQL Server 2005 vengono sfruttati i Notification Service del database server: in questo caso è l'applicazione che aspetta che sia il database a notificare i cambiamenti.

Per ulteriori informazioni su SqlDependency si rimanda all'articolo dedicato ai meccanismi di caching in ASP.NET 2.0.

Supporto al tipo di dati XML

In ADO.NET 1.x è possibile processare il resultset di una query eseguita con la clausula FOR XML come stream XML tramite il metodo ExecuteXmlReader, specifico del Data Provider di SQL Server. Il metodo restituisce un XmlReader contenente il risultato della query.

Con ADO.NET 2.0 il supporto a XML è stato potenziato. In particolare SQL Server 2005 supporta in modo nativo un nuovo tipo di dati per la memorizzazione di dati XML. In ADO.NET 2.0 si può ottenere un oggetto SqlXml per ogni dato di tipo XML direttamente da un SqlDataReader tramite il metodo GetSqlXml.

SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
  // ...

  SqlXml xmlField = reader.GetSqlXml(0);

  // ...
}

Container di dati: DataSet e DataTable

ADO.NET 2.0 continua a supportare due modalità per l'accesso ai dati:

  • modalità connessa, tramite cui è possibile eseguire comandi e navigare resultset mentre la connessione alla sorgente dati è attiva;
  • modalità disconnessa, mediante cui è possibile popolare classi container di dati, sfruttando le funzionalità di un oggetto DataAdapter.

In ADO.NET 1.x l'oggetto container è rappresentato unicamente dal DataSet. Nella nuova versione di ADO.NET il DataSet, notevolmente potenziato e migliorato, viene affiancato dall'oggetto DataTable, che acquisisce tutta una serie di caratteristiche tali da renderlo compatibile con il DataAdapter.

4 pagine in totale: <<Indietro 1 2 [3] 4 Avanti >>

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC