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