Introduzione


In questo secondo articolo, approfondiremo l'utilizzo di Entity Framework in relazione al paradigma Code-First, che - come abbiamo visto in precedenza - non necessita di uno schema database già esistente, permettendo piuttosto di operare a livello dati partendo dalla definizione degli oggetti/classi che caratterizzeranno le entità. Anche in questo caso, verrà fatto uso di C# in ambito WinForms, ma - come detto nel precedente articolo - questa scelta non andrà ad inficiare una diversa destinazione d'utilizzo che lo sviluppatore potrà ritenere opportuna.

Perché Code-First?


Avendo valutato la praticità dell'approccio Database-First, viene da domandarsi quali siano le motivazioni che dovrebbero spingerci verso il paradigma Code-First. D'altra parte, si potrebbe progettare la base dati, elaborando direttamente su SQL Server (ad esempio) il nostro schema, le entità, le chiavi e le relazioni, demandando poi al pratico Database-First la derivazione delle classi e loro interconnessioni, peraltro sfruttando la GUI che i modelli EDMX mettono a disposizione.

In realtà, vi sono diversi motivi per i quali Code-First può rappresentare una scelta appropriata. In primis, si rivela essere la sola strada percorribile nel caso in cui la base dati non esista, ma debba essere creata dall'applicazione. In questo caso, saranno le classi definite dallo sviluppatore a rappresentare il modello su cui creare il database e le sue entità. Code-First si interfaccia in modo ottimale con database già esistenti: inoltre, nel caso la base dati debba essere accessibile solo in parte (ad es.: ci interessa derivare tabelle non complete), Code-First consente la dichiarazione di classi che contengano solo quanto effettivamente ci serve. Abbiamo un maggiore controllo sulla struttura stessa del database, che verrà determinata dal codice scritto. Nel caso sia necessario applicare modifiche alla base dati, disporremo di utili strumenti di migrazione, ridistribuibili con l'applicazione. Inoltre, - ed in parte qui ci ripetiamo - il codice in uso è effettivamente quello scritto, evitando l'over-bloating che l'approccio Database-First, per sua struttura intrinseca, in un certo senso impone, con i suoi numerosi files e la derivazione totale delle tabelle referenziate.

Ricordiamo inoltre che - sebbene il presente articolo si occupi di EF 6.1.3 - dalla versione 7.0 Code-First diventa l'unico paradigma utilizzabile, e quindi conoscerlo fin d'ora comporta un vantaggio non indifferente per il futuro.

Creazione di una base dati


In questa sezione, e relativi punti, vedremo come poter creare un database contenente alcune tabelle, utilizzando le sole classi che andremo a scrivere. Prima di ciò, riepiloghiamo brevemente come referenziare Entity Framework nel nostro progetto, come già fatto nel precedente articolo, «Introduzione ad Entity Framework con C#, parte I (it-IT)», al quale rimandiamo il lettore per le informazioni preliminari necessarie a questa seconda parte.

Referenziare Entity Framework nel progetto


Per referenziare EF all'interno del nostro progetto, ossia renderne le librerie accessibili alla soluzione, è necessario anzitutto creare un nuovo progetto in Visual Studio, scegliendo il template di cui abbiamo necessità (nell'esempio, come anticipato, selezionerò C# su WinForms). Salviamo quindi la soluzione (importante per evitare avvisi in fase di aggiunta di EF), ed apriamo il gestore di pacchetti Nuget.



In esso, cercheremo il package Entity Framework, e semplicemente lo aggiungeremo alla nostra solution mediante pressione del tasto «Installa». Al termine dell'operazione, vedremo come tra le References di progetto saranno state inserite quelle relative ad EF.



Siamo quindi pronti per utilizzare le potenzialità del nostro ORM relativamente allo sviluppo. 
 

Predisposizione allo sviluppo

Come già visto nel precedente articolo, sarà necessario aggiungere al progetto un'entità dati di tipo ADO.NET. A questo fine, cliccando sulla soluzione, e scegliendo la voce «Add New Item» andremo a scegliere dalla sezione «Data» un oggetto di tipo ADO.NET Entity Data Model, che chiameremo anche in questo caso "TechnetModello".


Continua la lettura su Introduzione ad Entity Framework con C#, parte II: Code-First e Migrazioni (it-IT)