2010-03-22 5 views
5

J'utilise NHibernate et ont une région de cache spécifiée dans ma configuration de NHibernate:NHibernate problème de cache/suppression?

<cache region="HalfHour" expiration="1800" priority="3" /> 

J'ai une définition de l'entité (UserDefinedGroup) qui est configuré pour utiliser cette région de cache en mode lecture-écriture:

<class name="UserDefinedGroup" table="Message_Groups"> 
    <cache region="HalfHour" usage="read-write" /> 
    ... 
</class> 

J'ai aussi une requête HQL qui est configuré pour utiliser le cache de requêtes car il renvoie un grand nombre d'instances de UserDefinedGroup:

var results = Session.CreateQuery("from UserDefinedGroup order by Name") 
       .SetCacheable(true) 
       .SetCacheRegion("HalfHour") 
       .List<UserDefinedGroup>(); 

Toutefois, lorsque j'essaie de supprimer une instance de UserDefinedGroup, l'erreur suivante s'affiche même si l'entité est définie pour utiliser le cache en lecture-écriture.

ReadOnlyCache: Impossible d'écrire à un objet readonly Cristal.Model.UserDefinedGroups.UserDefinedGroup

Suis-je complètement manquer le point ou l'incompréhension cache NHibernate ici? Je m'attendrais à ce que cela effectue la suppression et que le cache prenne soin de lui-même de manière appropriée, mais de toute évidence, cela ne se produit pas.

+1

Cette région de cache est-elle utilisée par d'autres entités? Si oui, existe-t-il des utilisations du cache en lecture seule? Une région spécifique ne devrait avoir qu'un seul type d'utilisation. – ddango

+0

Merci ddango, qui semblait être le problème exact. Le déplacer vers une nouvelle zone de cache l'a corrigé. J'accepterais votre réponse comme solution si vous l'avez posté comme réponse plutôt que commentaire :) –

Répondre

4

Cette région de cache est-elle utilisée par d'autres entités? Si oui, existe-t-il des utilisations du cache en lecture seule? Une région spécifique ne devrait avoir qu'un seul type d'utilisation.