OK, well after a bit of frilling around reading various web sites (Ayende Rahien's among them) I eventually came to the following conclusions:
- MS Access is probably not worth the trouble. It has very limited support for a whole bunch of join types and is basically broken... to be steered clear of even if the nHibernate project does fix the SchemaExport to work with this DB Type.
- SqlLite might work for some folks but has limited support for certain column types (Guids being one of them and being a type that I use quite extensively, so I passed on this)
- MySql has certain licensing issues and the API for this (which is what they suggest you use for embedded apps) is C++ with no ADO.NET or .NET wrapper that I could find. It could be that I didn't look hard enough and MySql embedded could be OK if you're cool with the way it's licensed, but I didn't bother looking into it because I've had some success with the following DB
- Firebird has an embedded mode which is extremely easy to use (comes with a nice fuzzy ADO.NET driver/assembly that you can link to) and deploy (copy a few dlls into your application directory and you're good to go). IMO Firebird is a more capable database than MySQL in any case and about the only catch I found here was that you have to use Firebird version 2.02 or later, since 2.01 has issues with Vista and Windows XP SP2 when running in embedded mode (long story there, but providing you use 2.01 or later you don't need to hear it).
So my executive summary would be :
- Firebird is an excellent choince for embedded databases
- MySql might be an option to... would need further looking into though.
Hope this helps someone else out there.
Best Regards,
James Crosswell
Microforge.net LLC
http://www.microforge.net