Question
J'ai différents types de données personnalisés dans mon application Web pour la carte des données de la base de données.
quelque chose comme:
Person
Id
Name
Surname
et j'ai besoin d'une liste de personnes dans la plupart des pages de mon application
Je pensais créer une propriété de lecture qui obtient la liste des personnes de la base de données et de stocker dans le cache de cette manière je n'ai pas appeler la base de données à chaque fois
quelque chose comme (code de pseudo)
public List<Person> Persons
{
get { return if cache != null return List of Persons from cache else get from the database;}
}
Où vais-je mettre ce getter? dans ma définition de la classe de personne ou dans ma page de base (page à partir de laquelle toutes les autres pages hériteront)
Merci
La solution
Je pense la mettre dans votre page de base serait une meilleure option.
En fonction de votre architecture d'application, un processus mettant code lié dans vos classes de domaine pourrait être un problème. Certains utilisent dans DDD (conception pilotée par le domaine) de type applications bien.
Mieux encore, je l'habitude d'essayer de cacher les détails d'implémentation dans une classe de service. Vous pourriez avoir une classe PersonService
qui contiendra votre méthode ci-dessus et toutes les opérations liées à la personne. De cette façon, une page de demande de renseignements de personne serait tout simplement appeler le PersonService
; et vous pouvez vous concentrer votre code de page sur le code lié à l'interface graphique.
Autres conseils
Je ne pense pas que vous devriez le mettre dans votre classe Person
car il accède à la base de données et HttpContext.Current.Cache
. De plus, je pense que vous devriez en faire une méthode et non une propriété, impliquer que ce peut une opération « longue ». Ainsi, des deux options, je le mettrais sur la classe de base Page
.