Andrei Alexandrescu wrote: > The database engine should be codified in the connection string, > not in the type name.
Why? If it's in the type, you can trivially specialize for different engines and get static checking for functions not supported across them all, or runtime checking if you prefer. You can also change the constructors to make it clear what is being created.