I downloaded NHibernate 2.0 today and started to play around with it, only to be greeted by a host of configuration errors like System.InvalidOperationException : Could not find the dialect in the configuration. It was then I remembered reading somewhere about some changes to the configuration syntax, so I downloaded the source and looked at the examples (after a brief, ill-fated search for NHibernate 2.0-specific documentation*). Here is an example of how an App.config looked for NHibernate 1.2:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> [...] </configSections>
<nhibernate> <add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" /> <add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2005Dialect" /> <add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver" /> <add key="hibernate.connection.connection_string" value="Server=INNORIA-4; Initial Catalog=iTMDBTemp; User Id=sa;Password=1234;" /> <add key="hibernate.show_sql" value="true" /> </nhibernate> [...] </configuration>
And here is the equivalent for version 2.0:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" /> [...] </configSections>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" > <session-factory> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property> <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> <property name="connection.connection_string">Server=INNORIA-4;Initial Catalog=iTMDBTemp; User Id=sa;Password=1234;</property> <property name="show_sql">true</property> </session-factory> </hibernate-configuration> [...] </configuration> The main changes are:
- We aren’t using an
nhibernateconfiguration section, it’shibernate-configurationnow (yay for more typing!
). - We now have a
session-factorychild node for adding the configuration properties. - We aren’t adding properties using the
<add key="..." value="..." />syntax. Instead we are using<property name="...">(property value)</property>. - The property names aren’t prefixed by “hibernate” anymore, so “hibernate.connection.provider” becomes “connection.provider“.
Moral of the story is to check the source first — the NHibernate.Examples folder is filled with helpful goodies.
Svend Tofte also has a helpful post on setting up NHibernate 2.0.
