我对 NHibernate 的二级缓存有疑问。当我使用查询时:
var items1 = Session.Query<Row>()
.Cacheable();
.Fetch(x => x.Field)
.OrderBy(x => x.Field.Value)
.ToList();
一切都很好 - 查询被缓存。但是当我想使用 Dynamic Linq (链接)时:
var items2 = Session.Query<Row>()
.Cacheable();
.Fetch(x => x.Field)
.OrderBy("Field.Value")
.ToList();
查询未缓存。有趣的是,当我删除代码行时:
.Fetch(x => x.Field)
缓存再次起作用。所以问题在于同时使用 Fetch 和动态 linq OrderBy 方法。
编辑:
当我尝试调试 NH 代码(QueryKey 类)时,调试器告诉我这两个查询没有相同的 ResultTransformer(更深层:一个 listTransformation 私有实例)。
有任何想法吗?
克里斯