8

Stiamo provando a creare un livello di accesso ai dati per l'utilizzo sia di Oracle che di SQL Server (non allo stesso tempo).Entity Framework Server Oracle e Sql - come creare un'applicazione indipendente dal database

Utilizziamo EF Model-first per la creazione del modello e la creazione degli script SQL per la creazione del database. Il nostro primo pensiero è stato quello di creare 2 file EDMX, uno per ogni tipo, e utilizzare quello appropriato a seconda delle necessità del cliente. Stiamo utilizzando il flusso di lavoro di generazione di database Oracle e SQL Server e il modello di generazione DDL per creare gli script per ciascun database.

Il nostro problema principale è quando le modifiche dello schema del database non si vogliono eliminare e ricreare il DB, ma solo creare gli script di migrazione per aggiornare la base DB sul nostro modello (i client hanno molti dati che andranno persi).

Utilizziamo EF power pack per estrarre gli script di migrazione per SQL Server ma non esiste nulla di simile per Oracle.

Vogliamo aiuto per trovare un buon livello dati (1 EDMX per Oracle e SQL Server se è possibile e non complicato) e un buon modo per generare modifiche al database dal nostro modello per aggiornare i DB client esistenti in caso di un nuovo application release

Abbiamo trovato questo come punto di partenza http://msdn.microsoft.com/en-us/data/ff830362 ma non c'è menzione per il supporto Oracle.

Abbiamo provato le migrazioni di codice e EF, ma Oracle ci ha nuovamente fallito nella creazione e migrazione di DB.

Qualche raccomandazione su come possiamo raggiungere questo obiettivo?

Thank You

risposta

4

Non v'è alcun modo per avere un'unica EDMX per SQL Server e Oracle. EDMX consiste di tre parti CSDL (definizione dell'entità), SSDL (definizione del database), MSL (mappatura tra quelle definizioni). SSDL deve sempre indirizzare il database concreto in modo che sia necessario almeno SSDL separato per Oracle e SQL Server e se si è fortunati non sarà necessario anche MSL separato (la mappatura deve essere esattamente la stessa che probabilmente non si verificherà se si utilizza uno strumento per generare il database).

Quindi è sempre necessario almeno una parte del file EDMX per il secondo DB e manualmente mantenerlo.

Se è necessaria la migrazione del DB che supporta Oracle, è necessario cercare lo strumento da Oracle (o da una terza parte). Ad esempio, RedGate offre strumenti che supportano la migrazione dello schema sia per SQL Server sia per Oracle.

Visual Studion Premium e Ultimate Edition offre anche strumenti per il confronto di schemi di database. Per impostazione predefinita supporta solo SQL Server ma Toad Extensions dovrebbe aggiungere anche il supporto per Oracle.

Una volta ottenuto uno di questi strumenti, è sufficiente confrontare lo schema distribuito sul server del cliente con il nuovo schema e lo strumento dovrebbe creare uno script di migrazione.

+0

Grazie comunque per avere questa indipendenza.Hai mai provato l'ORM ad accesso aperto di Telerik? Sembra che faccia quello che stiamo cercando per molti database tra cui SQL Server e Oracle e gestisce le migrazioni? – christosst

0

Il miglior articolo che ho trovato su questo argomento è da Paul Reynolds Blog. Prova a passare dalla parte 5 alla parte 9.

Ci sono così tanti trucchi su Oracle menzionati qui ... è molto utile!