gpt4 book ai didi

nhibernate - 在 Fluent Nhibernate 中设置实体和关系的缓存?

转载 作者:行者123 更新时间:2023-12-03 10:15:33 26 4
gpt4 key购买 nike

有没有人有一个例子,如何设置以及在流畅的 nhibernate 中缓存哪些实体。都使用流畅的映射和自动映射?

实体关系也一样,一对多和多对多?

最佳答案

我一直在处理类似的情况,我只想缓存特定元素,并希望这些元素在启动时加载一次,并保存在缓存中,直到应用程序关闭。这是一个只读缓存,用于填充国家/地区列表,以便用户可以从列表中选择他们的国家/地区。

我使用了 fluentNhibernate Mappings,并用 Cache.readonly() 定义了我的类(class)

public class CountryMap : ClassMap<Country> {
public CountryMap() {
Schema("Dropdowns");
Cache.ReadOnly();
// Class mappings underneath
}
}

我的用户类 map 如下所示:
public class UserMap : ClassMap<User> {
Id(x => x.Id).Column("UserId");
Map(x => x.FirstName);
Map(x => x.LastName);
References(x => x.Country)
.Column("CountryId");
}

我手动配置 Fluent Nhibernate 以使用二级缓存。所以在我流畅的配置中,我有:
var sessionFactory = Fluently.Configure()
.Database (...) // set up db here
.Mappings(...) //set up mapping here
.ExposeConfiguration(c => {
// People advice not to use NHibernate.Cache.HashtableCacheProvider for production
c.SetProperty("cache.provider_class", "NHibernate.Cache.HashtableCacheProvider");
c.SetProperty("cache.use_second_level_cache", "true");
c.SetProperty("cache.use_query_cache", "true");
})
.BuildSessionFactory();

我已经检查了 SQL 探查器,当我获得用户的国家/地区列表时,它们会被加载一次,并且在每次其他请求后都会获得缓存命中。好消息是,当显示用户国家名称时,它从缓存中加载,并且不会向数据库发出请求。我从这个帖子中得到了一些提示 Gabriel Schenker .希望有帮助吗?如果您找到了更好/正确的方法,请告诉我?谢谢!

关于nhibernate - 在 Fluent Nhibernate 中设置实体和关系的缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1502794/

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