2012-05-06 13 views
10

Ho appena scaricato EntityFramework.dll v4.3. Ho trovato una serie di domande che confrontano DbContext rispetto a ObjectContext. Ma la maggior parte di questi sono dal 2010, o all'inizio del 2011.È sempre meglio usare "DbContext" invece di "ObjectContext"?

Mi piacerebbe leggere di più sull'argomento. In particolare, ci sono libri su DbContext Posso mettere le mani su? Voglio anche sapere, a partire da oggi, quali sono i limiti di DbContext quando lo si confronta con il fratello maggiore dello ObjectContext?

Mi rendo conto che DbContext è più compatto in quanto espone meno proprietà. Questo mi suggerisce che dovrei migrare da ObjectContext. Ma, se faccio questa migrazione, rinuncerò a qualsiasi capacità? Ad esempio, ho letto che DbContext non ha la capacità STE (entità di auto-rilevamento). Questo è ancora vero ed è una preoccupazione?

+0

Possibile duplicato di [ 'ObjectContext' vs 'DbContext' in Entity Framework] (https://stackoverflow.com/questions/9176967/objectcontext-vs-dbcontext-in-entity-framework) – DavidRR

risposta

16

Mi piacerebbe leggere di più sull'argomento. In particolare, ci sono libri su DbContext Posso mettere le mani su?

La tua domanda non inizia bene perché una singola query di Google ti darà una risposta. C'è uno excellent book about DbContext stesso — che non contiene nulla sull'approccio Code First, ma immagino che non sia davvero il punto della tua domanda.

ho trovato una serie di domande che mettono a confronto DbContext vs. ObjectContext. Ma la maggior parte di questi sono a partire dal 2010, o all'inizio del 2011.

Se si desidera solo per sostituire ObjectContext + EDMX con DbContext + EDMX, il confronto è sempre lo stesso. DbContext è un wrapper attorno a ObjectContext e il suo set di funzionalità non è cresciuto tranne per quanto riguarda le funzionalità relative a Code First e Migrations.

mi rendo conto che DbContext è più compatto in quanto espone meno proprietà. Questo mi suggerisce che dovrei migrare da ObjectContext.

Sì, è più compatto e semplifica le attività più comuni che è necessario fare con il contesto. Per attività più complesse, è ancora possibile convertire un'istanza DbContext in un'istanza ObjectContext tramite IObjectContextAdapter.

Ma, se faccio questa migrazione, rinuncerò a qualsiasi capacità? Per esempio con , ho letto che lo standard DbContext non ha la capacità STE (Self-tracking entità). Questo è ancora vero ed è una preoccupazione?

STE è stato creato per ObjectContext e non credo che fosse portato su DbContext, ma si può provare a implementare questa funzionalità da soli.

STE sono solo un modello con un'idea per risolvere qualche problema.È sembrata una buona soluzione teorica, ma non è stata accettata molto bene dalla comunità degli sviluppatori perché la soluzione non è molto buona per gli scenari del mondo reale. È anche il motivo per cui vengono sviluppate altre funzionalità più importanti invece di migliorare o eseguire il porting del modello.

+4

Per quanto riguarda imprese commerciali: "The Entity Il team di framework non ha apportato aggiornamenti significativi al modello delle entità di tracciamento automatico sin dalla prima versione, raccomandando agli sviluppatori di utilizzare WCF Data Services come soluzione più completa e affidabile. " (p.76 da _DbContext_ di Julia Lerman_) –