L2キャッシングがどのように機能するかを誤解したのではないかと思います。'HasMany(x => x.Posts)'をキャッシュしようとしていますが、基本的にはその下に多くの投稿があるトピックがあります-トピックマップの上部に以下を追加すると、次のような印象を受けました
Cache.ReadWrite().IncludeAll();
そのキャッシュマップとhasManysは、アプリの基になるデータ変更が再開されるまでですか?L2キャッシュをそのように構成しています
Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008.ConnectionString(c => c.FromConnectionStringWithKey("MyAppConString")))
.Cache(c => c.ProviderClass<SysCacheProvider>().UseQueryCache())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<MembershipUserMap>())
Etc…etc..
私のトピックマップには次のものがあります(私はそれを短くするために法線マップの負荷を削除しました)、そしてあなたは投稿でHasManyを見ることができます。
public TopicMap()
{
Cache.ReadWrite().IncludeAll();
Id(x => x.Id);
Map(x => x.Name);
*lots of other normal maps*
References(x => x.Category).Column("Category_Id");
References(x => x.User).Column("MembershipUser_Id");
References(x => x.LastPost).Column("Post_Id").Nullable();
HasMany(x => x.Posts)
.Cascade.AllDeleteOrphan().KeyColumn("Topic_Id")
.Inverse();
*And a few other HasManys*
}
したがって、すべてのトピックを取得したら、ループして次のようにします
Topic.Posts.Count()
SqlProfilerを使用すると、各トピックのすべての投稿を取得(最初のヒット)が表示されますが、ページをリロードしても、トピッククエリのすべての取得投稿が表示されますか?
私は何かが足りないのですか?これは今キャッシュする必要があると思いましたか?