ok, un esempio è Entity Framework con Oracle - EF genera SQL non valido fino a qualsiasi DB non SQLServer (Microsoft ha esteso sql con una nuova istruzione - Cross Application ). Quindi in questo caso, usare EF ORM con Oracle o MySQL può essere una scelta disastrosa.
Solitamente le persone come le librerie client indipendenti dal DB, il costo è un po 'di prestazioni e occasionalmente problemi legati al tipo di dati (ad es. una data può essere rappresentata in modo diverso per diversi DB), occasionalmente si ottengono alcune limitazioni nelle diverse funzionalità dei DB (ad es. 10 x da y "non funziona con Oracle ma con SQLServer, devi" selezionare x da y dove rowid < 10 ". Di solito questo è permesso nella libreria client ma a volte non offrono questa funzionalità affatto per entrambi i DB).
Penso che le uniche volte in cui si vuole veramente un provider specifico per DB ora è quando le prestazioni sono molto importanti, specialmente per non doversi preoccupare di ciò che la libreria client fa con la memoria. La maggior parte degli accessi al DB sono lenti, ma la riallocazione di enormi blocchi di memoria è ancora più lenta. L'altro aspetto è se hai bisogno di funzionalità specialistiche fornite da un singolo DB, in questo caso è più probabile che tu abbia bisogno della libreria dei provider.