-
Notifications
You must be signed in to change notification settings - Fork 245
Roundhouserefreshdatabasefnh
ferventcoder edited this page Jun 19, 2011
·
30 revisions
If you use NHibernate or Fluent NHibernate to define your domain model, you can use it to generate your sql scripts as well. RoundhousE.RefreshDatabase.FNH brings some code to a console application (x86) to allow you to generate your SQL file and apply it to your local database immediately!
- Create a console application (C# project).
- Make it x86.
- Use NuGet to install
roundhouse.refreshdatabase.fnh
. - Set the start up program to
RefreshDatabase.Main()
. - Add a project reference to your application's DLL that has the Fluent Mappings (and/or HBMs)
- OPTIONAL: Add a project reference to your application's DLL that has the conventions (could be the same as the step above).
- Set up the following code (already at the top of RefreshDatabase.cs):
private static bool _isThisInitialDevelopment = true; //are you in greenfield or have you been to production?
private static string _nameOfInitialScript = "0001_CreateTables_NH.sql"; //name of the script that will be created by nhibernate SchemaExport
private static string _nameOfUpdateScript = "0002_AlterTables_NH.sql"; //name of the script that will be created by NH Schema Update. This one will change names the most over the lifetime of the project.
//roundhouse information
private static string _databaseName = "__REPLACE__"; //name of your database - installs to local default instance
private static string _pathToSqlScripts = @"..\..\..\__REPLACE__"; //This is the path to your scripts folder where Up/Views/Functions/Sprocs are the next folder below
private static string _repositoryPath = "__REPLACE__"; //The path to your source control repository. Used only for information sake.
//restore
private static bool _restoreDuringMaintenance = true; //you want to restore if you have a production backup that is small enough. Otherwise you get into a bit more advanced scenario that this package doesn't cover well
private static string _pathToRestore = @"\\__REPLACE__.bak"; //this is the path to the restore file, likely on the network so everyone can get to it
//Note: Add a reference to the project that has the Mappings/Conventions
private static string _mappingsAssemblyPath = @".\__REPLACE__.dll"; //After adding a reference, the file will be in the build directory, so you can just add the name of the dll here.
private static string _conventionsAssemblyPath = @".\__REPLACE__.dll"; //If you don't have a conventions assembly, just use the same DLL you just used for mappings.
- Whenever you have made mappings/conventions changes to your project or have updated database sql files, you can just run the project you created for instant local feedback.
- Right click on the project and select Debug -> Start new instance.
- Watch it run. If any errors occur, you will be able to see them in the console or in the database it was working with under the ScriptsRunErrors table.
- If the errors occur with the schema generation, hopefully that hangs in the console long enough for you to decipher what is wrong.
- If there are certain things you don't want SchemaExport/SchemaUpdate to generate, in the mapping class you can add this line in the constructor:
SchemaAction.None();
- If you are using NHibernate Mappings, you add this to the HBM file:
<class name="yourClassName" schema-action="none">