我正在尝试从我的数据库中获取满足给定条件的列表。我使用的声明是: var products = session .CreateCriteria(typeof运算(产品)) .Add(Restrictions.Eq(“类别”,类别)) .LIST();
其中,product是我的Domain对象 session是当前活动的会话。
每当我使用这个语句时,NHibernate每次都会查询数据库以获取列表而不是第一次执行该操作,然后从第二次开始从缓存中返回结果。我有什么不对的吗?
答案 0 :(得分:1)
它必须命中数据库,但只能检索查询结果中的PK值。
演示:在此行上设置断点,执行一次,然后在再次执行之前暂停。直接修改数据库以更改其中一个对象的值,然后再次运行该行。检查结果。返回的实体不应反映您对数据库所做的更改(即,它们来自会话缓存)。