After using the migrator for a while i decided it could be much more usable if
the developer
should not worry to much about the creation of new integrations.
For this reason i added some abilities to the Migrator.Console.exe
1. Assemble the Migrator files on the fly.
Example: migrator.console.exe SqlServer "Data Source=.\SQLEXPRESS;Initial
Catalog=MigratorSpike;Integrated Security=True; " -dir Modify
This will take all the .cs (CSharp support only) files from the Modify
directory and apply them to
the database
2. Use app.config instead of specifying the ConnectionString
Example: migrator.console.exe MigratorSpike -dir Modify
This will use the connection string from Migrator.Console.exe.config with the
name
"MigratorSpike"
Example Migrator.Console.exe.config:
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="MigratorSpike" connectionString="Data Source=.\SQLEXPRESS;Initial
Catalog=MigratorSpike;Integrated Security=True;"
providerName="System.Data.SqlServer" />
</connectionStrings>
</configuration>
3. In my opinion the most useful feature: Generate new Migrations
Example: migrator.console.exe -generate SomeTableAddSomeColumn
This will generate a new class to a Modifiy directory with the given name, The
migrator attribute
comes prepopulated with the current Datestamp as a Long, The filename will also
include the
Datestamp for correct ordering. It will create the Modify directory if it
doesn't exist yet.
Example 2: migrator.console.exe -generate SomeTableAddSomeColumn /ns:MyNamespace
If not specifying the /ns: switch all generated files will be generated with
the default "Modify"
namespace. If you want to change that specify the /ns: switch
Example 3: migrator.console.exe -generate SomeTableAddSomeColumn
/ns:MyNamespace
/outdir:C:\Source\MyProject\Database\Modify
If the /outdir: switch is not specified all files will be generated to the
"Modify" subdirectory in the
current working directory. When the switch is specified all files will be
generated to the given
directory.
Combine example 3 with a little DOS Magic and be able to run it from just one
line:
create SomeTableAddSomeColumn
migrate
In the attached create.bat and migrate.bat wherein i check the outdir for
existing files with the
same classname, This prevents compilation errors. Another check could prevent
the user to use
C# keywords. One could even autmatically open the file in devenv.exe or even
better run the
generation from within Visual Studio and add the file to the project. Nice!
I didn't add UnitTests. It seems migrator.console project comes without them
and i decided not
to change it ;)
+ Oliver
P.S: There is a small constructor overload to the ScriptEngine, it allows to
specify the trace
attribute to prevent the output of Log messages when running from the console.
I didn't create a
separate patch for it. I hope it may be overseen. It's my first contribution so
i will try to
improve...
Original issue reported on code.google.com by Oliver.J...@gmail.com on 11 Mar 2009 at 3:39
Original issue reported on code.google.com by
Oliver.J...@gmail.com
on 11 Mar 2009 at 3:39Attachments: