스택 오버플로에서 보았던 샘플과 인터넷을 통해 다음 출력을 비교하면 분명히 show_sql
과 format_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'
로그/콘솔 등의 쿼리를 SQL Server Management Studio와 같은 것으로 복사하여 붙여 넣을 수 있으며 수정없이 쿼리를 실행할 수 있습니까? 기본적으로 nhibernate에서 나오는 SQL의 실행 가능한 버전을 원하십니까? –
사실, 출력이 다소 정규 SQL을 준수 할 것으로 기대하면서 너무 야심적입니다 ("show_sql"또는 "format_sql"속성을 지정하는 경우)? 나는 다른 이유가있을 이유가 없습니다. –
글쎄, 기본적으로 일반 SQL을 준수한다고 생각합니다. 당신이해야 할 일은 변수를 디칼 레이션 (decalre)하거나 @ P0 값으로 명시 적으로 어디 필터를 설정할지 편집하는 것입니다. 나는 thouhgh에 동의합니다. 그것은 Insert Statement와 같이 많은 양의 변수가있는 경우 통증, paiticulary입니다. 당신이 시도 할 수있는 하나의 comercial 제품은 http://nhprof.com/입니다. –