Ho queste classi
class Match
{
int MatchID,
int Team1ID, //used to reference Team
int Team2ID,
... other fields
}
Nota: la partita ha in realtà 2 squadre che significano 2 TeamID
class Team
{
int TeamID,
string TeamName
}
Dal mio punto di vista ho bisogno di mostrare List<Match>
che mostra TeamName. Così ho aggiunto un altro campo
class Match
{
int MatchID,
int TeamID, //used to reference Team
... other fields
string TeamName;
}
Ora posso fare
Match m = getMatch(id);
m.TeamName = getTeamName(m.TeamId); //get name from database
Ma per un List<Match>
, getTeamName(TeamId)
andrà al database per recuperare TeamName per ogni TeamID.
Per una pagina di 10 risultati per pagina, che potrebbe essere (10x2Teams)=20
di viaggio nel database. Esempio:
for(1..10)
{
Match m[i] = getMatch(i);
//the team are never going to be repeated, 20 teams spread over ten matches
m[i].Team1Name = getTeamName(m.Team2Id);
m[i].Team2Name = getTeamName(m.Team2Id);
}
Per evitare questo, ho avuto l'idea di caricare tutto una volta, memorizzarlo in memoria e cercare solo il TeamName in memoria. Questo mi ha fatto ripensare a cosa succederebbe se i record fossero 5000 o più.
Quale modello è usato per risolvere questo e come?