NHibernate の二次キャッシュに問題があります。クエリを使用する場合:
var items1 = Session.Query<Row>()
.Cacheable();
.Fetch(x => x.Field)
.OrderBy(x => x.Field.Value)
.ToList();
すべて問題ありません。クエリはキャッシュされています。しかし、Dynamic Linq ( a link )を使用したい場合:
var items2 = Session.Query<Row>()
.Cacheable();
.Fetch(x => x.Field)
.OrderBy("Field.Value")
.ToList();
クエリはキャッシュされません。興味深いことに、コード行を削除すると:
.Fetch(x => x.Field)
キャッシングは再び機能します。したがって、問題は Fetch と動的 linq OrderBy メソッドを一緒に使用することです。
編集:
NH コード (QueryKey クラス) をデバッグしようとすると、デバッガーは、これら 2 つのクエリに同じ ResultTransformer (さらに深いところ: listTransformation プライベート インスタンス) がないことを通知します。
何か案は?
クリス