The SqlCe way:

// Do nothing, Connection.Open will create a database if it does not exist.

I think the most elegant way, is the way Sqlite creates databases. Less API calls for me to learn makes me happier.

The secondmost elegant way is the Firebird way. Exploring the Connection object is one of the first things you do when dealing with a db provider, so its handy having the CreateDatabase API right there in my intellisense options.

The third most elegant way, is the SqlCe way. The API is fairly straight forward, and its not too hard to discover the SqlCeEngine object.

My least favorite way it the VistaDb way, the only way to figure this one out is to read through documentation. Also, I am left thinking, what do I do with these connection and command objects, do I need to dispose them?