En comparant la sortie suivante avec des exemples que j'ai vus ici à Stack Overflow et sur Internet, je me demande ce que je fais mal, car apparemment les propriétés et format_sql
sont correctement définies ?La propriété format_sql de NHibernate (pas que) jolie impression
sortie
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>
salut 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>
Tout conseil sera vraiment apprécié. Merci beaucoup d'avance.
MISE À JOUR Dans
réponse aux commentaires J'ajoute comment le attendu sortie devrait ressembler (essentiellement une instruction SQL valide):
NHibernate:
SELECT
Isbn,
Title,
Author,
Publisher,
Published,
Pages,
InStock,
Description
FROM
Books
WHERE
Isbn = '0596800959'
Vous voulez être en mesure de copier et de coller la requête à partir du journal/etc Console dans somthing comme SQL Server Management Studio et exécutez la requête avec toute modification? Fondamentalement, vous voulez une version exécutable du SQL qui sort de nhibernate? –
En effet je veux dire suis-je trop ambitieux (si vous nommez une propriété "show_sql" ou "format_sql") en espérant qu'une sortie se conforme au langage SQL? Je n'ai aucune raison de m'attendre à autre chose. –
Eh bien, je suppose que c'est fondamentalement conforme à la norme SQL. La seule chose que vous devez faire est d'éditer les variables ou de définir explicitement le filtre where avec la valeur @ P0. Je suis d'accord, c'est une douleur, paiticulary si vous avez un grand nombre de variables comme dans une déclaration d'insertion. Un produit commercial que vous pourriez essayer est http://nhprof.com/ qui fera ce que vous cherchez pour vous. –