In realtà direi di non farlo. La condivisione di un database - qualsiasi tipo di database - tra più applicazioni equivale praticamente a un nodo centrale e puoi trovarti in un punto molto difficile lungo la linea quando è richiesto qualsiasi tipo di modifica dello schema. In realtà esiste un anti-pattern per questo: il database di integrazione ( link ).
La condivisione di un livello di accesso ai dati è una tra le applicazioni è una possibilità, sia da un gestore di pacchetti o da cartelle condivise di controllo del codice sorgente, ma nella mia esperienza ciò rende effettivamente la flessibilità e la manutenibilità dei sistemi un centinaio di volte peggiore. L'accoppiamento tra i sistemi potrebbe rendere i tempi degli aggiornamenti del database notevolmente più difficili.
Invece, consiglierei di rendere uno dei sistemi responsabili per lo schema del database. Di solito, c'è un'applicazione il cui dominio copre più naturalmente i dati. Quindi, esporre l'accesso ai dati tramite alcune API pubbliche, se WCF, HTTP, un bus dei messaggi o altro. Questo ti dà uno strato di isolamento dal cambiamento; quando il database ha motivo di cambiare, solo l'applicazione responsabile deve aggiornarsi allo stesso tempo. Per quanto riguarda le altre applicazioni, nulla cambia quando ciò accade, poiché l'API rimane la stessa.