2009-05-04 2 views
19

linq을 사용하여 Nhibernate를 사용하여 데이터베이스에 일부 select 쿼리를 발생시킵니다.Fluent에서 생성 한 쿼리를 아는 방법 NHibernate

Fluent NHibernate가 생성 한 쿼리는 궁금한 점입니다.

+3

유창함 NHibernate에이 ** ** 모든 쿼리를 생성하지 않습니다. 그것들을 생성하는 NHibernate입니다. –

+0

이 질문은 도움이 될 것이라고 생각합니다. http://stackoverflow.com/questions/474659/how-to-log-sql-calls-with-nhibernate-to-the-console-of-visual-studio – HerbalMart

답변

5

SQL을 log4net에 넣으려면 구성 섹션에서 로거를 설정해야합니다.

NHibernate 패키지를 "INFO"에 놓으면 노이즈와 NHibernate.SQL을 모두 줄여서 모든 SQL 문을 기록 할 수 있습니다.

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


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

2

this을 참조하십시오. 필요한 것은 hibernate.show_sql입니다.

유창함 자 NHibernate와
+0

thanks .. ............. –

+7

Fluent NHibernate로 어떻게 구성합니까? –

35

,이 같은 show_sql을 설정할 수 있습니다 :

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

NHibernate에 지금 Console.Out에 모든 SQL 문을 인쇄합니다.

+1

안녕하세요 Kevin, 게시 해 주셔서 감사합니다. Log4Net을 사용하여 생성 된 SQL을 파일로 전송하도록 설정했는지 궁금합니다. – 5x1llz

+13

이것은 매우 실망 스럽습니다. 이것이 왜 작동하지 않는지 어떤 생각? 내 콘솔을 통해보고 있는데, 거기에 있지 않습니다. – Milimetric

0

당신은 너무 this one 같은 SQL 프로파일을 사용할 수 있습니다 찾을 수 있습니다.

-1

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

0

확실히 NHProf을 구입하여 사용하십시오. 이것은 멋진 제품이며, 실행중인 질의를 보여줄뿐만 아니라 NHibernate 매핑과 질의에 대한 잠재적 성능 문제를 보여줍니다.

2

나는 nhibernate와 유창한 nhibernate에서 SQL 쿼리를 아는 4 가지 옵션을 발견했다.

  1. 로그 - 조이 브이는이 같은 질문에 대답했다.
  2. ShowSql - Kevin Berridge가 이와 동일한 질문에 대답했습니다.
  3. NHProf - 이것은 멋진 프로파일 러입니다. NHProf
  4. 인터셉터 - SQL을 보는 것이 좋습니다. 우리는 Visual Studio의 Output과 심지어 로그 파일에 넣을 수 있습니다.

    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; 
        } 
    } 
    
관련 문제