Updating the database
It's usually required to update your database if mappings for your application have changed. In this recipe, we'll generate a SQL script to update your database objects.
Getting ready
Complete the Configuring NHibernate with App.config or Web.config recipe at the beginning of this chapter.
Note
This recipe works for any RDBMS supported by NHibernate. To use a different system, adjust your connection string and dialect accordingly.
How to do it...
- Open
Program.cs
. - Add these
using
statements to the beginning of the file:using Eg.Core; using NHibernate.Mapping.ByCode; using NHibernate.Tool.hbm2ddl;
- Modify the
Main
method to look similar to this:var nhConfig = new Configuration().Configure(); var mapper = new ConventionModelMapper(); nhConfig.AddMapping(mapper.CompileMappingFor(new[] { typeof(TestClass) })); var update = new SchemaUpdate(nhConfig); update.Execute(false, true); Console.WriteLine("The tables have been updated"); Console.ReadKey();
- Build and run your application. Inspect the table(s) in the database.
- Modify
TestClass
to include an additional property:public virtual string Description { get; set; }
- Build and run the application again. The
TestClass
table should now have a new column corresponding to theDescription
property.
How it works...
Using the mapping metadata from the configuration object and the current dialect, hbm2ddl
analyzes the existing structure of your database and generates a script to fulfill the differences. The SchemaUpdate
only adds missing objects, and does not try to remove anything.
See also
- Configuring NHibernate with App.config
- Configuring NHibernate with hibernate.cfg.xml
- Configuring NHibernate with code
- Configuring NHibernate with Fluent NHibernate
- Generating the database
- Scripting the database