2010-04-12 6 views
0

im nouveau dans le modèle Castle Record Record et Im essayant de comprendre comment utiliser effectivley cache. Donc ce que j'essaie de faire (ou de vouloir faire) est d'appeler GetAll, de savoir si je l'ai déjà appelé et de vérifier le cache, sinon le charger, mais je veux également passer un paramètre booléen qui force le cache effacer et requery le db.Castle Active Record - Travailler avec le cache

Donc je suis à la recherche des derniers bits. grâce

 public static List<Model.Resource> GetAll(bool forceReload) 
    { 
     List<Model.Resource> resources = new List<Model.Resource>(); 


     //Request to force reload 
     if (forceReload) 
     { 
      //need to specify to force a reload (how?) 
      XmlConfigurationSource source = new XmlConfigurationSource("appconfig.xml"); 
      ActiveRecordStarter.Initialize(source, typeof(Model.Resource)); 
      resources = Model.Resource.FindAll().ToList(); 
     } 
     else 
     { 
      //Check the cache somehow and return the cache? 
     } 

     return resources; 
    } 


    public static List<Model.Resource> GetAll() 
    { 

     return GetAll(false); 

    } 

Répondre

3

Jetez un oeil à la configuration de la mise en cache:

vous êtes BTW initialisation ActiveRecord chaque fois que vous appelez GetAll. Vous devez initialiser une seule fois, lorsque votre application démarre.

De même, il n'est généralement pas recommandé de libérer explicitement le cache de cette manière. Au lieu de cela, utilisez une sorte de politique ou de dépendance (voir par exemple SqlDependency)

En outre, NHibernate a un cache de second niveau enfichable.

Questions connexes