2014-03-31 1 views
0

NHibernate에서 이상한 문제가 발생했습니다. 나는 이것에 대한 설명과 해결책이 있다고 확신한다. 나는이 문제에 하나 개의 쿼리를 격리하고 코드는 다음과 같습니다 : 그래서 여기에 우리가 간다NHibernate QueryOver가 동일한 쿼리로 3 번 쿼리합니다

_session = _sessionFactory.OpenSession(); 
ITransaction _transaction = _session.BeginTransaction(); 

var result = _session.QueryOver<Employee>() 
    .Where(x => x.uid == employeeuid) 
    .SingleOrDefault(); 

_transaction.Commit(); 

직원 개체 등 일부 참조를 가지고 있지만, 나는이 지금 중요하다고 생각하지 않습니다. UID는 문자열입니다. 기본적으로 log4net은 동일한 쿼리가 세 번 실행된다고 알려줍니다.

SELECT <some columns...> FROM employer this_ WHERE this_.uid = <uid-string> 

일반 쿼리를 보면 알 수 있습니다. 누구든지 쿼리 오버 헤드 제거 방법에 대한 힌트를 줄 수 있습니까?

감사합니다, 마틴

답변

1

내가 먼저 데이터베이스 자체에 조회되는 것을보고하여이를 백업 할 것이다. 데이터베이스가 actualy 중 하나를 수행되고 있는지 확인하려면 - 쿼리를

  1. 실행 SQL 프로파일 및 프로파일
  2. NHProfiler의 평가판 버전을 다운로드하고 확인. 이것은 훌륭한 도구이며, 미래의 문제에 도움이된다면 그것을 구입할 가치가 있습니다.

개인적으로 나는 log4Net이 분출하는 로그 정보량에 대해 조금 의심 스럽다.

+0

롤 (Lol) 나는이 가능성에 대해 생각하지 않았다 :-) 사실 로그는 여러 번 기록되었다. 감사! –

+0

도움이 되니 기쁩니다 ... – Rippo