Configuring NHibernate with code
You can also configure NHibernate entirely in code. In this recipe, we'll show you how to do just that.
Getting ready
- Complete the steps in the Installing NHibernate recipe.
- Add a console application project to your solution called
ConfigByCode
. - Set it as the Startup project for your solution.
- Install NHibernate to
ConfigByCode
project using NuGet Package Manager Console. - In
ConfigByCode
, add a reference to theEg.Core
project.
How to do it…
- Add an
App.config
file with this configuration:<?xml version="1.0" encoding="utf-8"?> <configuration> <connectionStrings> <add name="db" connectionString="Server=.\SQLEXPRESS; Database=NHCookbook; Trusted_Connection=SSPI" /> </connectionStrings> </configuration>
- In
Program.cs
, add the followingusing
statements:using NHibernate.Cfg; using NHibernate.Dialect;
- In your
Main
function, add the following code to configure NHibernate:var nhConfig = new Configuration().DataBaseIntegration(db => { db.Dialect<MsSql2012Dialect>(); db.ConnectionStringName = "db"; db.BatchSize = 100; }); var sessionFactory = nhConfig.BuildSessionFactory(); Console.WriteLine("NHibernate Configured!"); Console.ReadKey();
- Build and run your application. You should see the text NHibernate Configured!
How it works…
In this recipe, we create an NHibernate configuration using methods in the NHibernate.Cfg
namespace. These methods offer full type safety and improved discoverability over code configurations in the previous version of NHibernate.
We specify dialect
, connection.connection_string_name
, and adonet.batch_size
with the DatabaseIntegration
method. Finally, we build a session factory using the BuildSessionFactory
method.
There's more...
Notice that we are still referencing the db
connection string defined in our App.config
file. If we wanted to eliminate the App.config
file entirely, we could hardcode the connection string with this code:
db.ConnectionString = @"Connection string here...";
This, however, is completely inflexible, and will require a full recompile and redeployment for even a minor configuration change.
See also
- Configuring NHibernate with App.config or Web.config
- Configuring NHibernate with XML
- Configuring NHibernate with Fluent NHibernate