- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用它,我可以告诉 Fluent NHibernate 使用 SysCache 作为二级缓存提供程序:
MsSqlConfiguration.MsSql2008.ShowSql().ConnectionString(x =>
{
x.Server(@"localhost\ANDREPC");
x.Database("mydb");
x.TrustedConnection();
}).Cache(c => c.ProviderClass<SysCacheProvider>().UseQueryCache())
此外,SysCache的配置必须放在Web.Config中:
<configuration>
<configSections>
<section name="syscache" type="NHibernate.Caches.SysCache.SysCacheSectionHandler,NHibernate.Caches.SysCache" />
</configSections>
<syscache>
<cache region="foo" expiration="500" priority="4" />
<cache region="bar" expiration="300" priority="3" />
</syscache>
</configuration>
现在呢?这些区域是什么意思?如何将区域与类型相关联?我如何使它起作用?我的 jMeter 测试表明,在上面的配置之后,我的应用程序比以前慢了 7%。我需要了解 SysCache 并学习如何继续配置。
谢谢。
PS:SysCache 的官方文档是here而且这不是解释性的
最佳答案
根据您的操作,我认为默认情况下 L2 缓存仅缓存 ID 调用的项目,例如session.Get 或 session.Load。要使用 ICriteria 等缓存查询,您需要明确说明您希望缓存该查询。例如
ICriteria criteria = Session.CreateCriteria( ).SetCacheable( true ).SetCacheRegion( "SomeNameHere" );
这里的 some 名称是您的缓存区域。简而言之,这会将缓存项组合在一起,为了保持简洁,我通常只输入类/实体的名称,例如“Person”或“Company”。
在设置类映射时,您可能总是希望使用基类的 Cache 属性。有点像
Cache.ReadWrite( ).IncludeAll( ) ;
我个人发现,如果没有这个,当执行查询时,它会缓存结果集中每个项目的 ID,但不会缓存项目本身,因此这会使繁重的查询变得快速,但它必须为每个项目访问数据库item,因此如果您有一个非常简单的查询返回 100 个项目,那么您的数据库可能会被命中 100 次。我发现将以上内容添加到我的映射类中可以解决该问题。
希望对您有所帮助。
关于c# - 如何在 Fluent NHibernate 上设置 SysCache?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3955739/
如果我通过 nuget 安装 NHibernate 和 Syscache,我会收到一个很大的“无法加载文件或程序集”错误。 Syscache 基本上是针对 NH 3.2 构建的,但 nuget 上的当
当前版本的 SysCache 似乎不适用于 NHibernate 3.3。我替换了我的 web/bin 目录中的 NHibernate dll,并保持 SysCache dll(适用于 3.2)不变。
我正在开发一个 Web 应用程序,我希望缓存能够跨 Web 请求持续存在。 我知道一级缓存仅针对每个 session 。我启用了二级缓存,这适用于查询。 但是,二级缓存似乎不适用于“获取”实体……因此
使用它,我可以告诉 Fluent NHibernate 使用 SysCache 作为二级缓存提供程序: MsSqlConfiguration.MsSql2008.ShowSql().Connectio
我尝试使用来自网站的这篇文章的缓存配置: NHibernate.Caches.SysCache.SysCacheProvider
我一直在浏览互联网,似乎找不到可以下载适用于 NHibernate 3.1.0.4000 的 nhibernate.caches.syscache v3.1 的地方。 我有 3.0.0.4000 版的
我是一名优秀的程序员,十分优秀!