禁用Fluent Nhibernate中的特定覆盖缓存

问题描述:

我们在Fluent NHibernate中使用基于约定的映射。映射看起来像这样:禁用Fluent Nhibernate中的特定覆盖缓存

  .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()) 
      ) 

对于我们的大多数对象,这是完美的,但对某些对象我希望禁用二级高速缓存。然而,似乎我没有做到这一点。 Cache.None没有流畅的选项。我甚至尝试过Not.Cache(),但那也不起作用。

有没有人有任何想法,我可以如何禁用某些选定的模型对象的缓存?

好吧,我设法找到它经过一番周围挖慢跑一个想法:

  1. 删除快捷方式Cache.Is(x => x.ReadWrite()
  2. 创建一个新的公约类:
 
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. 将惯例添加到AutoMappings中。
  2. 完成!
开始=>