357 messaggi dal 10 giugno 2003
Ciao a tutti,

mi hanno chiesto di sviluppare un sito web che sia readonly cioe' nn devo gestire nessun inserimento o update;
a questo punto mi sto chiedendo se sia piu' semplice e veloce utilizzare
dataset tipizzati o creare delle entita' che mappino le tabelle del DB con tutto il codice per recuperare i dati e riempire queste classi;

potete consigliarmi un approccio che sia veloce e risolutivo?

ciao,
ale
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
L'utilizzo di entità non deve essere una scelta solo in caso di uso pesante dei dati (modifica/inserimento/cancellazione) e da scartare perché il sito visualizzerà solo i dati.

I problemi che riscontrerai in futuro sarà la "manutenzione" di questo sito, e i dataset sono tutt'altro che di facile "manutenzione" - IMHO.
La risposta mi sembra ovvia...

Ciao
.
andrewz ha scritto:
I problemi che riscontrerai in futuro sarà la "manutenzione" di questo sito, e i dataset sono tutt'altro che di facile "manutenzione" - IMHO


Anche IMHO: concordo con Andrea: usa entità e non dataset anche se il sito è "readonly"

Matteo Casati
GURU4.net
357 messaggi dal 10 giugno 2003
grazie per le risposte,

vi spiego meglio il mio problema:

io mi trovo nelle condizioni in cui nella prima pagina devo solo mostrare una serie di ID presi da una tabellaX;
dopo che l'utente ha selezionato un ID , devo mostrare su un'altra pagina
quell'ID piu' altri campi presi sempre dalla stessa tabellaX;
perciò sfruttando l'ereditarietà, mi sono creato per la prima pagina una classe base con 1 field "ID" e per la seconda pagina una classe che eredita dalla prima classe per mostrare gli altri campi che devo mostrare;
sto sbagliando approccio?

la creazione di tali classi mi è sembrato un approccio piuttosto laborioso in termini di tempo ( cioè il fare x ogni campo della tabella da mappare get e set) ed è per questo che allora mi sono chiesto se non fosse meglio far ritornare direttamente un DataTable anzichè fare N classi x le varie esigenze...
Modificato da alexbj il 28 marzo 2008 13.52 -
Modificato da alexbj il 28 marzo 2008 13.54 -
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
Perché non crei un entità unica per quella tabella per il singolo record ed una collection quando vuoi ritornare un'insieme degli stessi? I campi non necessari li carichi solo quando necessario (Lazy loading)
Ciao
.
357 messaggi dal 10 giugno 2003
si si andrea, torna gia' una collection delle mie entita' che vengono
associate poi ai controlli DataBound come Repeater o GridView o FormView;
cioe'

//Entity
class A { public long ID {..} }

//Collection
class CollectionA : Collection<A>
{}

//Helper Class
class DataHelper
{
public static CollectionA GetAllItems()
{
.....carico i dati con DataReader
while(dr.Read())
{
A a=new A(dr["ID"]);
miaCollectionA.Add(a);
}
return miaCollectionA
}
}

miaGrid.DataSource=DataHelper.GetAllItems();
miaGrid.DataBind();

questo e' quello che faccio;
ora il LazyLoading come lo implemento?
e' quello che fa anche il ProfileProvider?
mi puoi scrivere uno straccio di codice per capire cosa intendi?

ciao,
ale
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
Esattamente, è come il Profile che prende le informazioni solo quando servono.

Nel tuo caso credo che sia sufficiente, essendo una webapplication, diversicare le query al db nel caso della lista e nel caso del dettaglio.
Nel caso di "GetAllItems" alla DAL puoi richiedere solo il numero di campi effettivamente necessari per la visualizzazione, e solo nella visualizzazione del dettaglio di ogni singolo record puoi creare un nuovo method che dalla dal prendi tutti i dati necessari.

Ciao
.
357 messaggi dal 10 giugno 2003
grazie mille!!

ultima cosa...

spesso mi capita di dover utilizzare una FormView o un DetailsView per mostrare i dettagli di 1 singolo record;
nel mio DAL ho dei metodi come GetUserDetails(userID) che appunto recupera i dati del singolo user e che vorrei visualizzare con questi controlli DataBound;
ora il problema e' che questi controlli si aspettano comunque una collezione di oggetti e nn il singolo oggetto e quindi per ora sono costretto a fare nel mio DAL sempre 2 metodi per lo stesso scopo:

//ritorna una collezione di 1 singolo Item da associare
//con FormView.DataSource=DAL_GetUserDetails
DAL_GetUserDetails(userID)
{
List<User> _users=new List<User>();
_users.Add( GetUser(userID) );
return _users;
}

//ritorna il singolo Item
GetUserDetails(userID)
{
return GetUser(userID)
}

c'e' un modo migliore?

ciao,
ale

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.