Capisco che la tua API funzioni con un database che non rientra nell'ambito del tuo progetto ma che deve rispettare i tuoi requisiti API.
Non mi è chiaro se:
- tu "possiedi" lo schema e lascia semplicemente la responsabilità della gestione del database (inclusa la scelta del DBMS) agli utenti della tua API.
- la tua API dovrebbe funzionare su uno schema di terze parti e ha solo alcuni requisiti su questo schema di terze parti.
Inoltre, stai utilizzando Drapper . Quindi accedi al database tramite un IDbConnection ma potresti non essere sicuro del client utilizzato (ad es. client Sql, ODBC, OleDB ...).
Caso 1: possiedi lo schema
Se si dispone di uno schema SQL (si parla di "tabelle" e "colonne"), l'approccio migliore sarebbe quello di distribuire uno script SQL. Alla fine è possibile fornire diversi script per supportare i principali DBMS e i loro client nativi;
Poiché gestisci un progetto open source, non sarei sorpreso se alcuni dei tuoi utenti ti fornissero script adattati ad altri DBMS a cui non avevi pensato.
Caso 2: non possiedi lo schema
Capisco quindi che la tua API dovrebbe essere utilizzata da sviluppatori di terze parti, che la useranno per aggiungere funzionalità al proprio database.
Ci sono due opzioni:
- documenta le tue ipotesi e i tuoi requisiti (ovvero i passaggi manuali che devi svolgere) e consenti ai tuoi utenti di adattare i loro schemi. Dopotutto è loro la responsabilità, se vogliono usare la tua API.
- fornisce alcune funzioni API o uno strumento di amministrazione per adattare automaticamente lo schema, analizzare gli oggetti nel database e inviare comandi per aggiornarlo.
Il secondo sarebbe molto più bello. Ma come hai solo e IDbConnection
, potresti essere un po 'un vincolo sull'accesso che hai al database. Pertanto suggerirei di iniziare con l'approccio della documentazione e fornire come funzionalità sperimentale lo strumento di amministrazione che utilizza uno SqlClient. Di nuovo, con il principio dell'open source, ci si potrebbe aspettare un feedback e adattamenti di questo strumento per altri DBMS.