13 messaggi dal 04 ottobre 2001
Salve,
volevo chiedere se qualcuno ha gia'avuto esperienza con la classe SQLCacheDependency e sopratutto funziona!!
Per la precisione ho una gridview che contiene i dati di una tabella SQL server 2005.
Voglio che se qualcosa cambia nella tabella la gridview si refresh.. quindi non voglio fare nessun polling sul DB o obbligare l'utente a schiacchiare qualche bottone.
Ho letto diverse risorse disponibili (service Broker etc..etc..) su Internet e credo che di avercela fatta ma il problema e'che io credevo che il gridview si ricaricasse "automaticamente" mentre nel mio caso rimasse sempre lo stesso.

qualcuno ha usato la SQLCacheDependency per fare la mia stessa cosa e a lui funziona?

Di sicuro ho dimenticato qualcosa ... sono una vecchia programmatrice ASP che e' passata direttamente ad aSP.NET 2.0 ...
Grazie
Marina
per funzionare funziona, l'hai abilitata?

il supporto per SQLCacheDependency viene offerto ad esempio dal SqlDataSource e non dall GridView.

come associ i dati del tuo GridView?

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
13 messaggi dal 04 ottobre 2001
ciao..
grazie per avermi risposto..
Innanzitutto nella global.asax chiamo:
SqlDependency.Start("connectionString")

Nella pagina ASPX definisco solo il mio gridview e il codice che ho scritto:
Protected Sub Page_Load()
Dim contracts As DataTable = CType(Cache.Get("Contracts"), DataTable)
If contracts Is Nothing Then
Dim contracts As DataTable = New DataTable()
Dim connection As SqlConnection = New SqlConnection("connectionstring")
Using (connection)
Dim command As SqlCommand = New SqlCommand("SELECT field1,field2 from dbo.mytable",connection)
Dim dependency As System.Web.Caching.SqlCacheDependency = New System.Web.Caching.SqlCacheDependency(command)
Dim adapter As SqlDataAdapter = New SqlDataAdapter()
adapter.SelectCommand = command
Dim dataset As DataSet = New DataSet()
adapter.Fill(dataset)
contracts = dataset.Tables(0)
Cache.Insert("Contracts", contracts, dependency)
End if
GridView1.DataSource = contracts.DefaultView
GridView1.DataBind()
End Sub

Volevo iniziare con un semplice esempio per poi eventaulmente complicare le cose come ho scritto mi aspettavo che le pagina si aggiornasse nel momento che il contenuto della tabella cambia ma devo sempre cliccare su Refresh!!

qualche idea per aiutarmi a raggiungere cio' che voglio?
Grazie
Marina
ti consiglio la lettura qi questo articolo di Stefano:

http://www.aspitalia.com/articoli/asp.net2/caching.aspx

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
13 messaggi dal 04 ottobre 2001
Ciao ho letto l'articolo ma non mi ha aiutato molto..
Di tutto l'articolo quello che mi interessa sono le pagine2/3 e in ogli caso non fa ancora cio'che voglio ..

L'articolo dice
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
conn.Open();
SqlCommand comm = new SqlCommand("select campo from tabella", conn);
Response.AddCacheDependency(new System.Web.Caching.SqlCacheDependency(comm));
}

Ovviamente è possibile aggiungere questa dipendenza anche ad un oggetto in cache o ad un controllo DataSource.

ho visto che si puo settare la proprieta': sqldatasource.sqlCacheDependency = "dbchache:tabella"
senza quindi definire la query a livello di codice ..
dbcache deve essere definito nel web.config giusto?
io pero'avevo capito che usando l ínvalidazione basata su notifiche non devo impostare nel web.config e posso anche evitare di usare la direttiva OutputCache..

Sto facendo un gran casotto??
Grazie
mmm allora in questo spezzone di codice :

sqldatasource.sqlCacheDependency = "dbchache:tabella"

vedi solo la configurazione del db e della tabella ma in un SqlDataSource la query di select è ben definita mediante l'apposità proprietà.

nell'articolo sono mostrati di due meccanismi di invalidazione della cache, il polling (configurazione web.config) adatto per sql 2000 e le notifiche per sql server 2005

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
Ciao,

hai notificato l'utilizzo di SqlCacheDependency in linea di comando dell'sdk ?
aspnet_regsql -E -d database -t tabella -dt
aspnet_regsql -E -d database -d
aspnet_regsql -E -d database -lt

Fabrizio Canevali
13 messaggi dal 04 ottobre 2001
ciao Fabrizio...

visto che sto usando SQL server 2005, se uso Service Broker 2005 non e'necessario che uso quell'utility che crea un extra tabella, triggers etc..etc..

Da quello che ho capito SQL Service Broker 2005 sono stati migliorati per mandare notifiche alla mia applicazione web ..

Il mio problema e'che per come viene spiegato la mia pagina non si aggiorna in modo automatico ma richiede che io la "refreshi"
Marina

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.