Salvare dati in una session o database

lunedì 19 maggio 2014 - 11.52
Tag Elenco Tags  C#  |  .NET 4.0

svipla Profilo | Senior Member

Ciao a tutti
sto sviluppando un portale per la prenotazione online di hotel.
Dato che la ricerca potrebbe produrre molti risultati(quindi devo gestire l'impaginazione) e l'utente potrebbe applicare alcuni filtri(come stelle, fascia prezzo ecc), meglio salvare i risultati della ricerca in tabelle del database o salvare tutto in una session?

Secondo me, se salvo tutto in una session è più veloce recuperare i dati perchè accedo solo una volta al database, ma non so se posso salvare grandi quantità di dati. Se salvo tutto nel database posso salvare grandi quantità di dati, ma il svantaggio è che ogni volta che l'utente cambia pagina o filtro devo interrogare il db e poi non so come gestire l'eliminazione di vecchi dati presenti nel db.

A livello codice i dati verranno salvati in List annidate tra loro.

Cosa mi consigliate di utilizzare?

Grazie mille

ridaria Profilo | Expert

>Ciao a tutti
>sto sviluppando un portale per la prenotazione online di hotel.
>Dato che la ricerca potrebbe produrre molti risultati(quindi
>devo gestire l'impaginazione) e l'utente potrebbe applicare alcuni
>filtri(come stelle, fascia prezzo ecc), meglio salvare i risultati
>della ricerca in tabelle del database o salvare tutto in una
>session?

Perchè devi salvare i risultati della ricerca?
Non sono il frutto di una select che deriva dai vari filtri impostati ? Stelle fascia prezzo etcc?

>
>Secondo me, se salvo tutto in una session è più veloce recuperare
>i dati perchè accedo solo una volta al database, ma non so se
>posso salvare grandi quantità di dati. Se salvo tutto nel database
>posso salvare grandi quantità di dati, ma il svantaggio è che
>ogni volta che l'utente cambia pagina o filtro devo interrogare
>il db e poi non so come gestire l'eliminazione di vecchi dati
>presenti nel db.
>
>A livello codice i dati verranno salvati in List annidate tra
>loro.
>
>Cosa mi consigliate di utilizzare?

A prescindere dalla necessità di salvare i risultati, che non ho capito.

L'uso delle session deve essere parsimonioso ed attento, escluderei di salvarli in una session.
Ricordati che fai uso della ram del server.
Ricordati che le session sono soggette a scadenza, corri quindi il rischio di perdere i dati a causa della scadenza della session.


PS. Vorrei capire meglio perché vuoi salvare i risultati delle ricerche eseguite.

CIAO




>
>Grazie mille

Riccardo D'Aria

andrestu Profilo | Expert

usa la cache di Aspnet

Andrea Restucci - Web Developer

svipla Profilo | Senior Member

Ciao e grazie per l'aiuto
Vorrei salvare la ricerca perchè:
1- I risultati non saranno visualizzati in un'unica pagina, ma in più pagine. Quindi, se utilizzo un gridview o un repeater, ad ogni cambio pagina dovrei recuperare i dati.
2- Durante la visualizzazione, l'utente potrebbe selezionare dei nuovi filtri o cambiare l'ordinamento dei dati.
3- Ho 2 fasi di visualizzazione: visualizzazione della miglior offerta da parte di tutti gli hotel e visualizzazione dell'offerta scelta + altre camere dell'hotel scelto. Nella prima fase mi salvo tutti i dati e recuperarli nella seconda fase senza rieseguire la query.

Sto "impazzendo" per capire come salvare e dove salvarli. Sono indeciso se utilizzare dataset o List.
Ancora grazie

svipla Profilo | Senior Member

Ciao Andrea
sto valutando anche questa possibilità. Ma leggevo in alcuni forum e articoli che la session è ha livello utente, mentre cache è un oggetto globale a livello di applicazione. Molti consigliavano l'uso di session.
Non so. Vorrei una soluzione veloce

ridaria Profilo | Expert

Io non li salverei affatto.

Ad ogni interrogazione li riestrai.

Poi non so quanti ne sono.

Comunque un pò di elementi per prendere la decisione adesso li hai.

Ciao Facci sapere

Riccardo D'Aria

svipla Profilo | Senior Member

Ancora una domanda: supponiamo che utilizzi un gridview o un qualsiasi altro controllo per l'impaginazione. Se ogni volta carico solo i dati da visualizzare nella pagina, come fa il controllo ha capire che in realtà quella che sto visualizzando è, per esempio, pagina 2/100? Se non sbaglio, un gridview si crea il numero di pagine in base ai dati che passo.
Grazie ancora

ridaria Profilo | Expert

una grid view va configurata per la paginazione.

Sono proprietà della GridView:

AllowPaging ed altre proprietà per configurare al meglio la paginazione.

Puoi partire da qui:

http://msdn.microsoft.com/it-it/library/system.web.ui.webcontrols.gridview.allowpaging%28v=vs.110%29.aspx

Ciao se tutto ok chiudi il post e facci sapere

Riccardo D'Aria

svipla Profilo | Senior Member

Ancora grazie Riccardo
Utilizzo già i GridView, per suddividere automaticamente i record in pagine il gridview deve sapere il numero di record, quindi ogni volta devo leggere tutti i record da db e passare i record al gridview. Quindi non vado a leggere da db solo i record della pagina che voglio visualizzare. Giusto o sbaglio?
Grazie

ridaria Profilo | Expert

>Ancora grazie Riccardo
>Utilizzo già i GridView, per suddividere automaticamente i record
>in pagine il gridview deve sapere il numero di record, quindi
>ogni volta devo leggere tutti i record da db e passare i record
>al gridview. Quindi non vado a leggere da db solo i record della
>pagina che voglio visualizzare. Giusto o sbaglio?

Giusto devi leggere dal DB tutti i record che vanno a popolare la griglia, poi è lei che secondo i settaggi che gli hai dato a eseguire la paginazione, posizionando n record per ogni pagina.

Ciao

chiudi il post se tutto è OK


>Grazie
Prego
Riccardo D'Aria
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5