Asp.net mvc fluent nhibernate不在asp.net mvc中缓存查询
我正在使用一个带有asp.NETMVC的流畅的nhibernate,在对数据库进行查询时,我没有看到任何缓存。我目前没有使用二级缓存实现 我是否应该在不配置进程外二级缓存的情况下看到缓存的查询 映射如下所示: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
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>
…在后续调用中将不会命中数据库。是否打开了查询缓存?如果是,配置是什么?是否打开了查询缓存?如果是,配置是什么?