我们正在使用 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() 但也不起作用。
有人知道如何禁用某些选定模型对象的缓存吗?
最佳答案
好吧,经过一番挖掘后我终于找到了它:
- 删除快捷方式
Cache.Is(x => x.ReadWrite()
- 创建一个新的约定类:
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/