Domanda

Ho utilizzato Entity Framework per avviare un progetto di esempio abbastanza semplice.Nel progetto, ho creato un nuovo Entity Data Model da un database SQL Server 2000.Sono in grado di interrogare i dati utilizzando LINQ to Entities e visualizzare i valori sullo schermo.

Ho un database Oracle con uno schema estremamente simile (sto cercando di essere esatto ma non conosco tutti i dettagli di Oracle).Vorrei che il mio progetto potesse essere eseguito sia sugli archivi dati SQL Server che Oracle con il minimo sforzo.Speravo di poter semplicemente modificare la stringa di configurazione del mio Entity Data Model e Entity Framework si occuperebbe del resto.Tuttavia, sembra che non funzionerà perfettamente come pensavo.

Qualcuno ha fatto quello che sto cercando di fare?Ancora una volta, sto provando a scrivere un'applicazione in grado di eseguire query (e aggiornare) dati da un database SQL Server o Oracle con il minimo sforzo utilizzando Entity Framework.L'obiettivo secondario è quello di non dover ricompilare l'applicazione quando si passa da un archivio dati all'altro.Se devo "Aggiorna modello dal database" potrebbe andare bene perché non dovrei ricompilare, ma preferirei non dover seguire questa strada.Qualcuno sa di eventuali passaggi che potrebbero essere necessari?

È stato utile?

Soluzione

Ciò che è generalmente inteso con il termine "Ignoranza di persistenza" è che le classi di entità non vengono inondate da dipendenze dal framework (importante per gli scenari a più livelli).Questo non è il caso in questo momento, poiché le classi di entità devono implementare determinate interfacce EF ("IPOCO"), al contrario dei semplici vecchi oggetti CLR.Come ha menzionato un altro utente, esiste una soluzione chiamata Adattatore Persistence Ignorance (POCO) per Entity Framework V1 per questo, ed EF V2 supporterà POCO immediatamente.

Ma penso che quello che avevi veramente in mente fosse l'indipendenza dal database.Con un grande XML di configurazione che include il modello di archiviazione, il modello concettuale e la mappatura tra questi due da cui verrà generato un ObjectContext tipizzato in fase di progettazione, trovo anche difficile immaginare come supportare in modo trasparente due database.

Ciò che probabilmente sembra più promettente è l'applicazione di un provider ADO.NET indipendente dal database come quello di DataDirect.DataDirect ha inoltre annunciato il supporto EF per il terzo trimestre del 2008.

Altri suggerimenti

http://blogs.msdn.com/jkowalski/archive/2008/09/09/persistence-ignorance-poco-adapter-for-entity-framework-v1.aspx

Il problema principale è che il framework delle entità non è stato progettato pensando all’ignoranza persistente.Onestamente cercherei di utilizzare qualcosa di diverso dal framework delle entità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top