Come mantenere il database nell'applicazione open source?

2

Sto costruendo il mio primo progetto open source. È una build API con C #.

Il mio progetto ha strati

  • Api stesso per ricevere richieste
  • Libreria dei servizi, per la logica.
  • Libreria di database, per operazioni di database.

Sto usando Dapper come orm e sto creando, modificando manualmente le tabelle nel database. Se qualcuno scarica e esegue la mia app, otterrà un'eccezione perché il proprio database non ha tabelle che ho creato localmente.

Qual è il modo corretto di fornire schema db aggiornato, informazioni nel progetto opensource e / o c #?

    
posta Sefa Ümit Oray 30.07.2016 - 21:35
fonte

2 risposte

1

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:

  1. tu "possiedi" lo schema e lascia semplicemente la responsabilità della gestione del database (inclusa la scelta del DBMS) agli utenti della tua API.
  2. 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.

    
risposta data 31.07.2016 - 14:18
fonte
0

Potresti provare RoundHousE : "un'utilità di migrazione del database che utilizza file sql e il controllo delle versioni basato sul controllo del codice sorgente". Funziona con .NET in Windows e "attualmente funziona con Oracle, SQL Server (2000/2005/2008 / Express), Access, MySQL, SQLite e PostgreSQL".

Ci sono programmi simili là fuori.

    
risposta data 31.07.2016 - 10:47
fonte

Leggi altre domande sui tag