fluent-nhibernate - 在 Fluent Nhibernate 中禁用特定覆盖的缓存

标签 fluent-nhibernate fluent-nhibernate-mapping

我们正在使用 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();
    }
}
  • 将约定添加到自动映射中。
  • 完成!
  • 关于fluent-nhibernate - 在 Fluent Nhibernate 中禁用特定覆盖的缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13856389/

    相关文章:

    nhibernate - 流畅的 NHibernateWhere 子句

    c# - 使用流利的 nhibernate 映射实体 oneToMany

    asp.net-mvc-5 - 使用 Fluent 迁移器将初始行添加到表中

    nhibernate - 使用 SchemaExport 时按名称对列进行排序

    c# - 流利的 NHibernate : Issue with many-to-many relationship with custom intermediary table

    database - 使用 Fluent NHibernate 使用 Nhibernate 生成数据库

    nhibernate - 流利的NHibernate-不必要的更新

    c# - 自动映射和 Fluent NHibernate

    fluent-nhibernate - NHibernate 多对多映射无效列任意 [table]_[id]

    c# - Fluent NHibernate - 从映射覆盖表名