J'ai le fichier de configuration suivant pour NHibernate :
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.connection_string">Server=.\SQLEXPRESS;Database=mydb;Integrated Security=True;</property>
<property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.release_mode">auto</property>
<property name="adonet.batch_size">500</property>
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>
Mais le SQL n'apparaît pas dans la fenêtre de sortie de Visual Studio. Est-il obligatoire d'installer log4net ? Ou devrait show_sql
travailler seul?
Pour afficher le SQL dans la fenêtre de sortie de Visual Studio, configurez log4net pour utiliser TraceAppender dans votre configuration log4net. Ce:
<appender name="DebugSQL" type="log4net.Appender.TraceAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
Ensuite ceci:
<logger name="NHibernate.SQL" additivity="false">
<level value="DEBUG" />
<appender-ref ref="DebugSQL" />
</logger>
EDIT: Je n'arrive pas à formater cela correctement ici. Voir ce lien pour l'exemple de code
Pour ceux qui préfèrent le code plutôt que la configuration, l'extrait de code suivant créera l'enregistreur NH approprié avec un simple ajout de console.
var hierarchy = (Hierarchy) LogManager.GetRepository();
var logger = (Logger) hierarchy.GetLogger("NHibernate.SQL");
logger.AddAppender(new ConsoleAppender {Layout = new SimpleLayout()});
hierarchy.Configured = true;
show_sql
sorties vers Console.Out
- il est très utile lors de l'exécution de tests d'intégration
Depuis NHibernate 3.0, vous pouvez utiliser une configuration loquace
configuration.DataBaseIntegration(x =>
{
x.LogSqlInConsole = true;
x.LogFormattedSql = true;
});
Autres informations disponibles sur http://fabiomaulo.blogspot.com.ar/2009/07/nhibernate-configuration-through.html
Il existe quelque chose appelé profileur NHibernate que vous pouvez utiliser.
c'est cher mais ça marche et ça a un essai de 30 jours.