2

我的“用户”实体几乎总是通过用户名检索,而不是通过其整数代理键。因为用户名不是主键,这意味着ISession不会缓存它,而是重复命中数据库来获取相同的数据。

有什么办法可以配置 NHibernate 来让 ISession 缓存通过用户名检索的用户?

4

3 回答 3

2

似乎答案实际上是否定的。是的,如果您使用的是二级缓存,则不是,如果您使用的是会话缓存。

于 2011-03-04T16:41:23.820 回答
1

是的,您可以使用 NHibernate 的 natural-id 元素来完成此操作。请参阅http://ayende.com/Blog/archive/2009/06/23/nhibernate-ltnatural-idgt.aspx,该示例正是您所要求的。

于 2011-03-04T12:42:30.437 回答
1

“会话缓存”实际上不是缓存,而是实体映射。

我的建议是您使用在 HttpContext 中存储项目的自定义提供程序为查询启用二级缓存。

于 2011-03-05T23:13:09.220 回答