Introduzione a Entity Framework Core 1.0

di Stefano Mostarda, in LINQ,

Entity Framework Core 1.0 (EF Core d'ora in poi e precedentemente conosciuto come Entity Framework 7) è la nuova versione di Entity Framework ripensata e riscritta completamente da zero per coprire le nuove esigenze che Entity Framework 6 non è in grado di coprire. EF Core 1.0 è in grado di girare su diverse piattaforme, più sistemi operativi eterogenei e di sfruttare database non solo relazionali ma anche NoSql. Vediamo più in dettaglio queste funzionalità

Le nuove opportunità di EF Core 1.0

Nel 2014 il team di ADO.NET ha cominciato a lavorare alla nuova versione di Entity Framework e si è preposto una serie di obiettivi molto ambiziosi: il supporto a più sistemi operativi, a più piattaforme e a più modelli di database.

EF Core deve girare sul .NET Core e quindi deve girare sia su Windows, sia su Linux sia su MacOSX. Su Windows esiste il provider per SQL Server mentre sulle altre piattaforme è stato sviluppato il provider per PostgreeSQL. Ovviamente, EF Core deve girare anche sul Full .NET Framework.

EF Core deve girare anche in applicazioni UWP e quindi può girare su smartphone che montano Windows Mobile, su tablet e Windows. In questi casi, il provider fornito è per SQLite che è lo standard de facto per immagazzinare i dati in locale.

EF Core deve supportare sia database relazionali come SQL Server, Oracle, PostgreeSQL, e così via, sia database NoSql come Azure Table Storage e MongoDb. Come detto, per i database relazionali SqlServer e PostgreeSQL esistono già i provider, mentre per gli altri database relazionali i singoli vendor metteranno a disposizione il loro provider. Per quanto riguarda i database NoSql, Microsoft rilascerà il provider per Azure Table Storage mentre per gli altri database si aspetta che i vendor creino il loro provider. Questa funzionalità non sarà presente in EF Core 1.0 ma verrà rilasciata successivamente.

Davanti a questa serie di obiettivi, è stato subito chiaro che un semplice adeguamento del motore di Entity framework 6 non era sufficiente a garantire il successo. Infatti le prime linee di codice di Entity Framework risalgono al 2003 quando le esigenze da coprire e le soluzioni erano completamente diverse da quelle di adesso. Per questo motivo il team di ADO.NET ha deciso di riscrivere completamente da zero Entity Framework. In questo modo si è anche reso possibile risolvere alcuni problemi che affliggono Entity Framework alla base come la mancanza di supporto alle tabelle master-detail con detail orfani e una scarsa gamma di opzioni per la generazione della chiave primaria, giusto per nominarne alcuni.

È chiaro che EF Core 1.0 è un nuovo inizio per l'O/RM targato Microsoft, ma proprio a causa della sua riscrittura e dei cambiamenti nel motore, questo è un altro prodotto che non è retrocompatibile col predecessore e che soprattutto non ha molte delle funzionalità che invece ha il suo predecessore.

Che fine fa Entity Framework 6

Proprio perché Entity Framework 6 è un prodotto differente e più completo di EF Core, questo non è stato assolutamente né abbandonato né dichiarato come obsoleto da parte di Microsoft. Infatti, passerà diverso tempo prima che EF Core abbia le stesse funzionalità di Entity Framework 6 e quindi Microsoft ha già dato due chiare linee guida sul futuro:

  • Entity Framework 6 verrà ancora manutenuto a lungo garantendo bug fix e continuando a inglobare contributi dalla community
  • Anche con l'uscita di EF core, Entity Framework 6 rimane la Recommended Practice per l'accesso ai dati. EF Core è consigliato solo per applicazioni UWP e per applicazioni che devono girare su più OS (questi sono i casi che Entity Framework 6 non copre).

Alla luce di queste considerazioni, è chiaro che Entity Framework 6 è la scelta più ovvia per applicazioni che partono oggi e che devono girare su Windows/IIS.

Cosa cambia con EF Core

Sebbene ci siano enormi differenze tra il motore di Entity Framework 6 e il motore di EF Core, dal punto di vista dello sviluppatore non cambia molto in quanto quasi tutte le API di Entity Framework 6 sono state riportate in EF Core.

Tuttavia delle differenze ci sono e probabilmente quella che più salta all'occhio è l'assenza del mapping tramite file EDMX in favore del mapping tramite il solo codice. Questo non cambia il modo di creare il modello partendo dal database tramite il wizard, ma cambia solo il risultato finale quando chiudiamo il wizard: prima avevamo il file EDMX con il designer e i file T4 per generare il codice del modello e del contesto dal file, adesso abbiamo direttamente il modello e la classe di contesto con tutto il mapping senza il file e quindi il designer. Esistono tuttavia i Entity Framework Power Tools che permettono di mostrare il designer, in sola lettura, con tutte le classi del modello. Ovviamente, non essendoci più il designer, la modalità Model-First è stata definitivamente superata.

Un'altra cosa che cambia rispetto al passato, sono alcune API di mapping Code-First. Le API di mapping delle relazioni sono state riviste al fine di semplificarne l'utilizzo e aumentarne la potenza.

Dal punto di vista del codice di interfacciamento con il database, la classe DbContext continua a esistere ed è stata leggermente modificata per aggiungere alcune funzionalità. In generale, l'esperienza di utilizzo di questa classe è rimasta la stessa rispetto a entity Framework 6.

Ora che abbiamo capito cosa sia EF Core e come questo si discosta da Entity Framework 6, siamo pronti per creare un'applicazione sfruttando il Full .NET Framework.

3 pagine in totale: 1 2 3
Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Top Ten Articoli

Articoli via e-mail

Iscriviti alla nostra newsletter nuoviarticoli per ricevere via e-mail le notifiche!

In primo piano

I più letti di oggi

In evidenza

Misc