문제

LINQ를 사용하여 NHibernate를 사용하여 일부 선택 쿼리를 데이터베이스에 해제하고 있습니다.

내 질문은 유창한 nhibernate에 의해 생성 된 쿼리를 어떻게 알 수 있습니까?

도움이 되었습니까?

해결책

SQL이 log4net에 있으려면 구성 섹션에서 Logger를 설정하십시오.

Nhibernate 패키지를 "Info"에 넣어 노이즈와 Nhibernate.sql을 모두로 줄여 모든 SQL 문을 기록 할 수 있습니다.

  
 <logger name="NHibernate">
   <level value="INFO" />
 </logger>


  <logger name="NHibernate.SQL">
    <level value="ALL" />
  </logger>

다른 팁

유창한 nhibernate를 사용하면 켜질 수 있습니다 show_sql 이와 같이:

Fluently.Configure()
    .Database( MsSqlConfiguration.MsSql2005.ShowSql().ConnectionString(...) )...

nhibernate는 이제 모든 SQL 문을 인쇄합니다 Console.Out.

당신은 또한 이것이 유용하다고 생각할 수도 있습니다 http://nhprof.com/

Nhibernate 및 Fluent Nhibernate에서 SQL 쿼리를 알 수있는 4 가지 옵션을 찾았습니다.

  1. Log -Joey V.는이 같은 질문에 대한 답으로 말했습니다.
  2. ShowsQL -Kevin Berridge는이 같은 질문에 대한 답변으로 말했습니다.
  3. NHPROF- 이것은 멋진 프로파일 러입니다. NHPROF
  4. Intercepter- SQL을 보는 것이 정말 좋습니다. Visual Studio의 출력과 로그 파일에도 넣을 수 있습니다.

    ISessionFactory sf = Fluently.Configure()
            .Database(MySQLConfiguration.Standard.ConnectionString(ConnectionString).ShowSql())
            .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Stock>())
            .ExposeConfiguration(c => c.SetInterceptor(new ABCInterceptor()))
            .BuildSessionFactory();
    
    
    public class ABCInterceptor : EmptyInterceptor
    {
        public override NHibernate.SqlCommand.SqlString OnPrepareStatement(NHibernate.SqlCommand.SqlString sql)
        {
           Trace.WriteLine(sql.ToString());
           return sql;
        }
     }
    

보다 이것. 당신이 필요로하는 것은 hibernate.show_sql.

SQL 프로파일 러와 같은 것을 사용할 수 있습니다 이 하나 도.

확실히 사고 사용하십시오 NHPROF. 이것은 멋진 제품이며 쿼리가 실행되는 것을 보여줄뿐만 아니라 Nhibernate 매핑 및 쿼리의 잠재적 성능 문제를 보여줍니다.

log4net에 연결할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top