For quite some time I have been looking for an embedded database I could use with the confidence that it was the best choice. My usual choice so far has been SQLite, but mostly out of convenience and I haven't done any proper research of options.
This article is not meant as an exhaustive comparison or general recommendation, but to inform about various qualities or problems of these options. I will add new information as I find it, but I will likely eliminate some options early on.
When it comes to applications that use database, I usually hack simple tools in PHP and complex or computation intense in C#/ASP.NET. Additionally I need a somewhat comfortable tool for manual changes and debugging.
I usually combine relational databases with NHibernate (or Dapper) for C# and use dibi for PHP. I used Subsonic for one project, which eventually turned out to be inefficient and impractical. Entity Framework has significantly evolved in the past year, so I haven't tried the current version yet.
Recommended on StackOverflow, but not impressive. The examples look poorly written and I didn't find any appropriate tools.
Object database, limited to .NET (no PHP). No good tool that I know of.
Object database, no PHP (supported is .NET and JVM). Has a nice tool, but is somewhat Java-centric and requires different approach than relational databases.
Object database, limited to .NET (no PHP). No good tool that I know of. Has lazy-loading (not for POCOs), which is kind of useful for ad-hoc manipulation.