은, 우리가 NHibernate에 유창하게 구성된 SysCacheProvider 활성화 두 번째 수준 및 쿼리 캐시, 모두로 구성있어 쿼리 캐시에서 결과를 캐시하지 엔티티 매핑 파일에 Cache.ReadOnly()
으로 표시된 Lookup
이라는 엔티티가 있고 CreateCriteria
과 SetCacheable(true).SetCacheMode(CacheMode.Normal)
을 사용하여 가져옵니다.NHibernate에 두 번째 레벨 캐시</p> <pre><code>.Cache(x => x.UseQueryCache().ProviderClass<SysCacheProvider>().UseSecondLevelCache()) </code></pre> <p>우리가 우리의 응용 프로그램 구성에서
문제는 두 번째 레벨 캐시가 사용되지 않는 것입니다. NHprof를 사용하면 (고유 한 문자열 ID로) 조회를 가져 오는 첫 번째 쿼리가 올바르게 캐시 된 것을 볼 수 있지만 NHibernate는 모든 호출에서 두 번째 테이블을 사용하는 대신 캐시 된 SQL ID로 행을 반입하기 위해 데이터베이스로 이동합니다 레벨 캐시.
나는 모든 것을했습니다 in this blog하지만 아무 소용이 없습니다.
내가해야 할 일이 있습니까, 아니면 엔티티가 2 차 캐시에 추가되지 않을 수 있다는 함정이 있습니까?
이것은 우리 문제는 아니지만 염두에 두어야 할 사항이므로 올바른 것으로 표시해 두겠습니다. – GoatInTheMachine