gpt4 book ai didi

nhibernate - 流畅的 NHibernate 缓存与自动映射

转载 作者:行者123 更新时间:2023-12-04 01:07:49 26 4
gpt4 key购买 nike

我试图了解如何配置 Fluent NHibernate 以启用查询、实体等的二级缓存......同时使用自动映射。网上关于如何做到这一点的信息很少。当然可以在将类一一映射时完成...但是自动映射如何?

到目前为止,这是我的配置代码:

AutoPersistenceModel model = AutoMap.AssemblyOf<Seminar>()
.Where(t => t.Namespace == "[MY NAMESPACE]")
.Conventions.Add(DefaultCascade.All());

Configuration config = Fluently.Configure()
.Database
(
MsSqlConfiguration.MsSql2005
.ConnectionString(@"[MY CONNECTION STRING]")
)
.Mappings(m => m.AutoMappings.Add(model))
.BuildConfiguration();

_sessionFactory = config.BuildSessionFactory();

谢谢!

最佳答案

假设您已经从 NHibernate Contribution 项目下载了一个二级缓存提供程序,您应该能够使用以下内容在您的自动映射设置中初始化缓存。

Configuration config = Fluently.Configure()
.Database
(
MsSqlConfiguration.MsSql2005
.ConnectionString(@"[MY CONNECTION STRING]")
.Cache(c => c.UseQueryCache().ProviderClass<YourCacheProviderOfChoice>())
)
.Mappings(m => m.AutoMappings.Add(model))
.BuildConfiguration();

选择要缓存的查询只需在 Criteria 实例上调用 SetCacheable(true) 即可。
 var query = session.CreateQuery("from Blog b where b.Author = :author")
.SetString("author", "Gabriel")
.SetCacheable(true);
var list = query.List<Blog>();

这是一个 epic blog post关于NHibernate的一级和二级缓存,很好的引用资料。

关于nhibernate - 流畅的 NHibernate 缓存与自动映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2557687/

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