유창한 nhibernate에 의해 생성 된 쿼리를 아는 방법
-
03-07-2019 - |
문제
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 가지 옵션을 찾았습니다.
- Log -Joey V.는이 같은 질문에 대한 답으로 말했습니다.
- ShowsQL -Kevin Berridge는이 같은 질문에 대한 답변으로 말했습니다.
- NHPROF- 이것은 멋진 프로파일 러입니다. NHPROF
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에 연결할 수도 있습니다.
제휴하지 않습니다 StackOverflow