我想知道我是否误解了 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 我看到获取每个主题的所有帖子(第一次命中),但如果我重新加载页面,我仍然看到所有获取主题查询的帖子?
我错过了什么吗?我认为这应该现在被缓存?