gpt4 book ai didi

nhibernate - 在这个例子中,为什么 nhibernate 不从缓存中检索?

转载 作者:行者123 更新时间:2023-12-04 02:09:21 24 4
gpt4 key购买 nike

我正在尝试弄清楚如何使用 nhibernate 缓存连接的查询,但它似乎无法正常工作

这是我的代码:

   public CacheTestViewModel GetCacheTestViewModel()
{
var vm = new CacheTestViewModel();
var session = Repository.Session;
using (var tx = session.BeginTransaction())
{
vm.Projects = Repository.Session.Query<Project>()
.FetchMany(r=>r.ProjectApplications)
.ThenFetch(r=>r.Application)
.Cacheable().CacheMode(CacheMode.Normal)
.ToList();

tx.Commit();
}
return vm;
}

我一遍又一遍地运行它,它似乎正在从二级缓存加载 Project 对象,但它仍然返回到 db 以查询 ProjectApplication 对象,这很慢

nhibernate 是否可以缓存整个查询,以便从缓存中返回整个图形?

注意:我确实打开了查询缓存以及使用 Cache.ReadWrite() 设置的所有实体

这是我的缓存配置
       return configuration
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<ApplicationMap>().Conventions.Add(typeof(Conventions)))
.ExposeConfiguration(
c => {
// c.SetProperty("proxyfactory.factory_class", proxyFactory);
c.SetProperty("cache.provider_class", "NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache");
c.SetProperty("cache.use_second_level_cache", "true");
c.SetProperty("cache.use_query_cache", "true");
c.SetProperty("expiration", "86400");
})
.BuildSessionFactory();

最佳答案

也许您的缓存提供程序的配置有问题。我已经能够做到你想要使用 Couchbase 作为二级缓存提供程序,如下所述:

http://blog.couchbase.com/introducing-nhibernate-couchbase-2nd-level-cache-provider

如果您的部署环境在 Azure 上,我想这可能很有用。请注意,SysCache 模块不能与 AzureMemcached 模块共存。

http://www.webmoco.com/webmoco-development-blog/orchard-cms-second-level-caching

关于nhibernate - 在这个例子中,为什么 nhibernate 不从缓存中检索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22925644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com