InfoQ just blogged on a couple of .NET Migrations third-party libraries, which is something I’ve often wished the .NET world had.
The tutorial linked at the end of that article is a goodie.
Check it out in your spare time. There’s a big prize (read: kudos from me) for the first developer to make this work with GDB modelling…
Not quite as smooth as Rails migrations, but great anyhow.
January 20th, 2009 at 2:47 am
Hey Glenn,
I actually don’t like the concept of the migrations for the following reasons
1) I have to do the work twice. Create the tables in the DB and then take the time to create these migrations and keep them updated.
2) Another thing to maintain. There are bound to be oversights here where the DB gets changed but the migrations are not.
3) Databases have more complex things like SPs, table valued functions, indexes etc which may not always be expressed in migrations
I know I might be going against the popular migrations thing but thats my take on it.
Here is what I would suggest… Use a tool like SQLCompare that will script out your DB to a script file and include that script file in your SVN. Use a Nant taskk to make it a part your build process.
W.R.T Geodatabases, here is an idea I have been wanting to prototype for a while by creating a Nant task for it… Write an utility to export your GDB schema to a XML workspace document (pretty easy to do) ans stash that XML file into your SVN so that you can revert back to that version if needed. A Nant task can be written for it to make it a part of the automated build process.
Do I get a gift for that idea???
Thank You,
Vish
January 20th, 2009 at 4:01 am
Vish!
How are ya?
1) Well, you *might* have to do *some* of the work twice. The migration will create tables, columns, foreign keys, etc. Most of the basic stuff (I am talking Rails migrations, which I haven’t looked at in a while) The SPs and other programmable objects is where DRY starts to get wet.
2) True, but if you are SVNing your DDL, isn’t this always gonna be true?
3) See 1.
I like your idea….make it so. Oh, and is there any more beautiful gift than my undying admiration? Consider that your gift….
January 20th, 2009 at 7:00 am
Hey Glenn,
2 – I can automate the scripting of the DBs by running the SQLCompare tool against the DB and I don’t have to write and maintain it manually. Nant tasks already exist to call executables with parameters. I am bound to mess up if I do it manually …
Thank You,
Vish
January 21st, 2009 at 4:05 am
I believe the subsonic project has migrations in it. I believe it will just help with simple adding and removing tables/columns and what not, but it is open source so could be expanded.