2011-08-30 2 views
1

스택 오버플로에서 보았던 샘플과 인터넷을 통해 다음 출력을 비교하면 분명히 show_sqlformat_sql 속성이 올바르게 설정 되었기 때문에 내가 뭘 잘못하고 있는지 궁금하게 만든다. ?예쁜 출력을 가진 NHibernate의 format_sql 속성

출력

NHibernate: 
    SELECT 
     book0_.Isbn as Isbn0_0_, 
     book0_.Title as Title0_0_, 
     book0_.Author as Author0_0_, 
     book0_.Publisher as Publisher0_0_, 
     book0_.Published as Published0_0_, 
     book0_.Pages as Pages0_0_, 
     book0_.InStock as InStock0_0_, 
     book0_.Description as Descript8_0_0_ 
    FROM 
     Books book0_ 
    WHERE 
     [email protected]; 
    @p0 = '0596800959' [Type: String (0)] 

Book.cs

public class Book 
{ 
    public string Isbn { get; set; } 
    public string Title { get; set; } 
    public string Author { get; set; } 
    public string Publisher { get; set; } 
    public DateTime Published { get; set; } 
    public int? Pages { get; set; } 
    public bool InStock { get; set; } 
    public string Description { get; set; } 
} 

Book.hbm.xml

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
        assembly="Dotnet.Samples.NHibernate" 
        namespace="Dotnet.Samples.NHibernate"> 
    <class name="Book" table="Books" lazy="false"> 
    <id name="Isbn" /> 
    <property name="Title" /> 
    <property name="Author" /> 
    <property name="Publisher" /> 
    <property name="Published" /> 
    <property name="Pages" /> 
    <property name="InStock" /> 
    <property name="Description" /> 
    </class> 
</hibernate-mapping> 

하이 bernate.cfg.xml

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory> 
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 
    <property name="dialect">NHibernate.Dialect.MsSqlCeDialect</property> 
    <property name="connection.driver_class">NHibernate.Driver.SqlServerCeDriver</property> 
    <property name="connection.connection_string">Data Source=res/Catalog.sdf</property> 
    <property name="show_sql">true</property> 
    <property name="format_sql">true</property> 
    <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property> 
    </session-factory> 
</hibernate-configuration> 

정말 감사하겠습니다. 많이 미리 감사드립니다.

UPDATE 나는 예상 출력 (기본적으로 유효한 SQL 문)처럼 보이게하는 방법을 추가 해요 의견에 응답

:

NHibernate: 
    SELECT 
     Isbn, 
     Title, 
     Author, 
     Publisher, 
     Published, 
     Pages, 
     InStock, 
     Description 
    FROM 
     Books 
    WHERE 
     Isbn = '0596800959' 
+0

로그/콘솔 등의 쿼리를 SQL Server Management Studio와 같은 것으로 복사하여 붙여 넣을 수 있으며 수정없이 쿼리를 실행할 수 있습니까? 기본적으로 nhibernate에서 나오는 SQL의 실행 가능한 버전을 원하십니까? –

+0

사실, 출력이 다소 정규 SQL을 준수 할 것으로 기대하면서 너무 야심적입니다 ("show_sql"또는 "format_sql"속성을 지정하는 경우)? 나는 다른 이유가있을 이유가 없습니다. –

+0

글쎄, 기본적으로 일반 SQL을 준수한다고 생각합니다. 당신이해야 할 일은 변수를 디칼 레이션 (decalre)하거나 @ P0 값으로 명시 적으로 어디 필터를 설정할지 편집하는 것입니다. 나는 thouhgh에 동의합니다. 그것은 Insert Statement와 같이 많은 양의 변수가있는 경우 통증, paiticulary입니다. 당신이 시도 할 수있는 하나의 comercial 제품은 http://nhprof.com/입니다. –

답변

1

는 최신 버전을 사용하고 있습니까 NHibernate? 이것은 원래 task입니다. 이 블로그는 3.0에서만 지원된다는 것을 암시합니다.

+0

현재 버전 3.1.0.4000을 사용 중입니다. 최신 버전인지는 충분히 알 수 없지만 충분히 새로 워진 것 같습니다. –

+0

출력이 전혀 보이지 않습니까? – Dmitry

+0

드미트리 (Dmitry) 기고에 감사드립니다. 귀하의 질문에 정확히 따르지는 않았지만 출력물은 앞서 언급 한 어셈블리 버전의 원래 게시물에 표시된 것과 항상 동일합니다. –