Orchard의 Projections 모듈에 다음과 같은 문제가 있습니다.
Orchard가 아닌 데이터베이스를 열 때 별도의 응용 프로그램에서 가져온 데이터베이스를 열 때 주 범주가있는 페이지가 있습니다.) 하위 범주 및 해당 하위 범주의 항목에 대한 것입니다.Orchard 투영이 수백 개의 쿼리를 실행하지 못하도록하는 방법
쉽게 탐색 할 수 있도록 위젯에 주요 카테고리 제목을 표시하는 프로젝션이 있습니다. 그러나 페이지로드 시간은 급격히 늘어납니다. 예상치에도 각 주 카테고리를 전체적으로로드하려고 시도하기 때문에 두 번째 데이터베이스에 대해 기하 급수적 인 쿼리가 발생하고로드 시간이 30 초를 초과합니다.
투영 모듈에서 제목 부분 (및 모든 사용자 지정 바인딩)을 쿼리하고 해당 쿼리를 실행하는 부분을 무시할 수 있습니까? 사전에
감사합니다.
편집
우리는 미니 프로파일 러를 사용하고이 결과 :
문제가 줄에 Orchard.Projections.Drivers.ProjectionPartDriver의 표시 방법 것 같다 111 :
var contentItems = _projectionManager.GetContentItems(query.Id, pager.GetStartIndex() + part.Record.Skip, pager.PageSize).ToList();
어떻게해야합니까?
문제는 Orchard 자체가 사용하는 것처럼 NHibernate가 아니라 Entity Framework를 사용한다는 것입니다. 로드 된 부분은 Entity Framework에서 (관리자를 통해) 많은 쿼리를 실행합니다. 나는 이제 캐싱을 시도하고있다. 필터를 사용하여 제목 부분 이외의 항목을로드하는 것을 방지 할 수 있습니까? 문제는 무엇으로보고해야합니까? – Ytrog
속성에 액세스 한 부분 만로드됩니다. 대부분의 경우 이것은 뭔가를 표시하는 부분 만로드된다는 것을 의미합니다. Placement.info로 Parts_Title을 제외한 모든 것을 숨기면 대부분이 문제가 해결됩니다. Projector 쿼리에 대한 eager-loading 부분 레코드에 관한 문제를 만들려고 생각했습니다. – Piedone
눈에 보이지 않는 곳에도 placement.info로 숨길 수 있습니까? – Ytrog