2009-09-30 3 views
2

주어진 기준을 충족하는 데이터베이스에서 목록을 가져 오려고합니다. 사용중인 문구는 다음과 같습니다. var products = session .CreateCriteria (typeof (Product)) .Add (Restrictions.Eq ("Category", category)) .List();Nhibernate - 목록 받기

여기서 제품은 내 도메인 개체입니다. 세션이 현재 활성 세션입니다.

이 문장을 사용할 때마다, NHibernate는 매번 처음으로 그것을 수행하는 대신 나에게 목록을 가져오고 2 번째 이후부터 캐시의 결과를 반환하는 대신 데이터베이스를 쿼리합니다. 내가 잘못하고있는 것이 있습니까?

답변

1

데이터베이스에 도달해야하지만 쿼리 결과에서 PK 값을 검색하기 위해서입니다.

데모 :이 줄에 중단 점을 설정하고 한 번 실행 한 다음 다시 실행하기 전에 일시 중지하십시오. 데이터베이스를 직접 수정하여 오브젝트 값 중 하나를 변경 한 다음 행을 다시 실행하십시오. 결과를 확인하십시오. 반환 된 엔티티는 데이터베이스에 대한 변경 사항 (예 : 세션 캐시에서 가져온 변경 사항)을 반영하지 않아야합니다.

+0

데모를 수행하려면 기존 레코드를 _modify_해야합니다. 추가 된 레코드는 첫 번째 쿼리 이후에 캐시에 저장되지 않습니다. –

+0

빠른 응답을 보내 주셔서 감사합니다! –

+0

데이터베이스에서 PK 값을 검색해야하는 이유를 알고 있습니까? 또한 WPF + MVVM + NHibernate에 대한 좋은 링크를 알고 있습니까? 감사합니다. –