2

FluentNHibernateでコンベンションベースのマッピングを使用しています。マッピングは次のようになります。

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

ほとんどのオブジェクトではこれは完璧ですが、特定のオブジェクトでは2次キャッシュを無効にします。しかし、私はこれを行うことができるようには見えません。Cache.Noneには流暢なオプションはありません。Not.Cache()も試しましたが、うまくいきませんでした。

選択した特定のモデルオブジェクトのキャッシュを無効にする方法について誰かがアイデアを持っていますか?

4

1 に答える 1

2

さて、私はいくつかのアイデアを掘り下げた後、それを見つけることができました:

  1. ショートカットを削除する Cache.Is(x => x.ReadWrite()
  2. 新しいコンベンションクラスを作成します。
パブリッククラスCacheableConvention:IClassConventionAcceptance、IClassConvention
{{
    public void Accept(IAcceptanceCriteria基準)
    {{
        基準.Expect(x => x.EntityType.IsNotAny(typeof(Content)、typeof(InstanceSetting)、typeof(Profanity)));
    }

    public void Apply(IClassInstance instance)
    {{
        instance.Cache.ReadWrite();
    }
}
  1. AutoMappingsに規則を追加します。
  2. 終わり!
于 2012-12-13T12:38:02.703 に答える