Girando su internet nel cofee break ho trovato questo interessante articolo di Alex Homer sulle nuove tecniche di data caching che verranno introdotte in .NET 2.
Fondamentalmente questo sistema non fa altro che tenere in cache i dati fin tanto che questi non sono cambiati all'interno della fonte dati. Tutto questo avviene attraverso l'implementazione di tabelle di supporto/stored procedures e triggers.
L'operazione è possibile anche con Sql Server non 2005 (in cui questa feature è già disponibile) tramite una operazione di "pre-setup".
Per fare questo sarà necessario eseguire il tool aspnet_regsql.exe da riga di comando. Gli verranno passati valori di :
- Server Name
- Username
- Password
- Database
Tabella
tutto questo per ogni tabella in cui si vuole applicare la SqlDataCache dependecy.
Il codice che segue (di Bellinaso) mostra come questa tecnica verrà integrata dal punto di vista applicativo.
1 private void Form1_Load(object sender, EventArgs e)
2 {
3 using (SqlConnection cn = new SqlConnection(@"Data Source=.\SQLEXPRESS;
4 AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\northwnd.mdf;
5 Integrated Security=True;User Instance=True"))
6 {
7 SqlCommand cmd = new SqlCommand("SELECT * FROM Categories", cn);
8 cn.Open();
9 SqlDependency dep = new SqlDependency(cmd);
10 dep.OnChange += new OnChangeEventHandler(dep_OnChange);
11 SqlDataReader reader = cmd.ExecuteReader();
12
13 while (reader.Read())
14 textBox1.Text += reader["CategoryName"] + Environment.NewLine;
15 }
16 }
17
18 void dep_OnChange(object sender, SqlNotificationEventArgs e)
19 {
20 MessageBox.Show("Changed!");
21 }