我的'用户'实体几乎总是通过用户名检索,而不是通过其整数代理键检索。因为用户名不是主键,这意味着ISession不会缓存它并反复命中数据库以获取相同的数据。
有什么办法可以配置NHibernate来让ISession缓存用户名检索的用户?
答案 0 :(得分:2)
似乎答案实际上是否定的。是的,如果您正在使用二级缓存,则在您使用会话缓存时为否。
答案 1 :(得分:1)
是的,您可以使用NHibernate的natural-id元素来完成此任务。请参阅http://ayende.com/Blog/archive/2009/06/23/nhibernate-ltnatural-idgt.aspx,示例正是您所要求的。
答案 2 :(得分:1)
“会话缓存”实际上不是缓存,而是实体映射。
我的建议是,使用在HttpContext中存储项目的自定义提供程序为查询启用第二级缓存。