2012-12-13 1 views
2

Nous utilisons le mappage basé sur les conventions avec Fluent NHibernate. La cartographie ressemble à ceci:Désactivation de la mise en cache dans Fluent Nhibernate pour un remplacement spécifique

  .Conventions.Add 
      (
       Table.Is(x => string.Concat(x.EntityType.Name.ToLower(), "s")), 
       PrimaryKey.Name.Is(x => "Id"), 
       DefaultLazy.Always(), 
       DefaultCascade.SaveUpdate(), 
       AutoImport.Never(), 
       Cache.Is(x => x.ReadWrite()) 
      ) 

Pour la plupart de nos objets c'est parfait, mais sur certains objets que je souhaite désactiver le cache de niveau 2. Cependant, il ne semble pas que je puisse le faire. Il n'y a pas d'option fluide pour Cache.None. J'ai même essayé Not.Cache() mais cela n'a pas fonctionné non plus.

Quelqu'un at-il des idées sur la façon dont je peux désactiver le cache pour certains objets de modèle sélectionnés?

Répondre

2

Ok, je réussis à trouver après quelques recherches autour de fait du jogging une idée:

  1. supprimer le raccourci Cache.Is(x => x.ReadWrite()
  2. Créer une nouvelle classe de convention:
 
public class CacheableConvention: IClassConventionAcceptance, IClassConvention 
{ 
    public void Accept(IAcceptanceCriteria criteria) 
    { 
     criteria.Expect(x => x.EntityType.IsNotAny(typeof(Content), typeof(InstanceSetting), typeof(Profanity))); 
    } 

    public void Apply(IClassInstance instance) 
    { 
     instance.Cache.ReadWrite(); 
    } 
} 
  1. Ajoutez la convention aux AutoMappings.
  2. Fait!
Questions connexes