2010-05-12 5 views
1

J'ai construit ma première solution MVC et utilisé le modèle de référentiel pour extraire/insérer/mettre à jour ma base de données.Référentiel LINQ to SQL - mise en cache des données

Je suis maintenant en train de refactoriser et j'ai remarqué que beaucoup (en fait toutes) les méthodes dans mon référentiel frappent la base de données à chaque fois. Cela semble exagéré et ce que j'aimerais idéalement faire est de "mettre en cache" l'objet de données principal, par ex. 'GetAllAdverts' de la base de données et ensuite interroger cet objet en cache pour des choses comme 'FindAdvert (id), AddAdvert(), DeleteAdvert() etc ..'

Je devrais aussi envisager de mettre à jour/supprimer/ajouter enregistrements à cet objet de cache et la base de données.

Quel est le meilleur apporoach pour quelque chose comme ça?

Ma connaissance de ce type de choses est minime et vraiment à la recherche de conseils/conseils/tutoriel pour me diriger dans la bonne direction.

Merci d'avance.

+0

http://stackoverflow.com/questions/343899/how-to-cache-data-in-a-mvc -application # 349111 – David

Répondre

0

Cela vient frapper mon radar, et je suppose que vous avez déjà résolu le problème maintenant. Mais sinon, je regarderais dans les requêtes LINQ pré-compilé. Quelque chose comme ceci:

 private static Func<SomeDataContext, int, PersonDto> _getPersonByIdQuery = 
     CompiledQuery.Compile<SomeDataContext, int, PersonDto>(
      (dataContext, personId) => 
       dataContext.PersonDtos.where(c => c.PersonId == personId).FirstOrDefault() 
       ); 

Mettez quelque chose comme ça à l'intérieur de votre datacontext, puis ajoutez une méthode interne là pour appeler l'appeler. Votre retriever/économiseur appellera alors la méthode interne. Cela a-t-il du sens? Je ne peux pas poster plus de code si nécessaire ..

Bonne chance,

Justin