2013-04-08 8 views
17

Sto utilizzando EF 4.1 & utilizzando il primo approccio DB. Ho anche creato il mio file .edmx. Ora desidero creare le mie lezioni POCO.Perché utilizzare DbContext e non ObjectContext

Per questo, ho installato EF 4.x DbContext Generator e EF 4.x POCO Entity Generator di NuGet.

Sono perfettamente consapevole che è consigliabile utilizzare DbContext per EF 4.1+ poiché è derivato da ObjectContext. Tuttavia, ho ancora generato le mie classi POCO prima usando EF 4.x POCO Entity Generator & quindi anche da EF 4.x DbContext Generator.

EDIT: trovato questo ADO.NET DbContext Generator vs. ADO.NET Poco Entity Generator (ObjectContext)

In entrambi caso, si genera .Context.tt & file Model.tt. Quindi qual è la differenza esatta nei file generati da uno degli strumenti? Perché è consigliabile utilizzare DbContext per EF 4.1+?

Vorrei anche conoscere i limiti di ObjectContext.

risposta

17

DbContext è più recente API che dovrebbe lucidare gli sviluppatori di esperienza quando si utilizza attività più comuni - semplicemente l'API è meglio progettato, ma si devono ancora ottenere ObjectContext da DbContext e utilizzare l'API più vecchio, se si desidera utilizzare alcune funzioni più complesse. Se si prevede di aggiornare EF a 5.xo 6.x in futuro, probabilmente sarà più semplice con DbContext perché questo è ciò che il team di ADO.NET sta raccomandando.

In termini di generatori EF 4.x Il generatore POCO crea classi più complesse che utilizzano internamente le correzioni delle relazioni. Questa funzionalità si è dimostrata piuttosto inefficiente se utilizzata insieme al caricamento lento, in modo che il nuovo generatore EF DbContext non lo utilizzi.

nota

Side: Il passaggio di codice da un'API ad un altro è pienamente supportato:

  • È possibile utilizzare DbContext costruttore accettando ObjectContext per spostarsi da ObjectContext API per DbContext API
  • È possibile utilizzare IObjectContext adattatore per muoversi dall'API di DbContext all'API ObjectContext
Problemi correlati