Asp.net mvc fluent nhibernate不在asp.net mvc中缓存查询

Asp.net mvc fluent nhibernate不在asp.net mvc中缓存查询,asp.net-mvc,nhibernate,caching,fluent-nhibernate,Asp.net Mvc,Nhibernate,Caching,Fluent Nhibernate,我正在使用一个带有asp.NETMVC的流畅的nhibernate,在对数据库进行查询时,我没有看到任何缓存。我目前没有使用二级缓存实现 我是否应该在不配置进程外二级缓存的情况下看到缓存的查询 映射如下所示: Table("ApplicationCategories"); Not.LazyLoad(); Cache.ReadWrite().IncludeAll(); Id(x => x.Id); Map(x => x.Name).Not.Nullable(); Map(x

我正在使用一个带有asp.NETMVC的流畅的nhibernate,在对数据库进行查询时,我没有看到任何缓存。我目前没有使用二级缓存实现

我是否应该在不配置进程外二级缓存的情况下看到缓存的查询

映射如下所示:

 Table("ApplicationCategories");
 Not.LazyLoad();
 Cache.ReadWrite().IncludeAll();
 Id(x => x.Id);
 Map(x => x.Name).Not.Nullable();
 Map(x => x.Description).Nullable();
示例标准:

 return session
          .CreateCriteria<ApplicationCategory>()
          .Add(Restrictions.Eq("Name", _name))
          .SetCacheable(true);

每次我按名称请求应用程序目录时,它都会访问数据库,这是预期的行为吗?

级别1缓存仅在会话级别,一旦您处理了该会话,您的缓存就会随之运行。我假设,像大多数web应用程序一样,您将按请求执行会话;在这种情况下,它每次访问数据库是完全正常的


当您要在同一会话中执行相同或类似的查询时,1级缓存最为有用,在这种情况下,您将只看到对数据库的一次调用。

1级缓存仅在会话级别,一旦您处理了该会话,您的缓存将随之运行。我假设,像大多数web应用程序一样,您将按请求执行会话;在这种情况下,它每次访问数据库是完全正常的


当您要在同一会话中执行相同或类似的查询时,1级缓存最有用,在这种情况下,您只会看到对数据库的一次调用。

您需要启用二级缓存和查询缓存才能缓存查询

这与级别1缓存会话标识映射无关

如果将以下属性添加到NHibernate配置文件:

<property name="cache.provider_class">NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache</property>
<property name="cache.use_query_cache">true</property>

…在后续调用中将不会命中数据库。

您需要启用二级缓存和查询缓存才能缓存查询

这与级别1缓存会话标识映射无关

如果将以下属性添加到NHibernate配置文件:

<property name="cache.provider_class">NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache</property>
<property name="cache.use_query_cache">true</property>

…在后续调用中将不会命中数据库。

是否打开了查询缓存?如果是,配置是什么?是否打开了查询缓存?如果是,配置是什么?