Introduzione a Entity Framework Code-First Migrations

di stefano mostarda, in Entity Framework,

Quando utilizziamo l'approccio Database-First per mappare il database con il nostro modello a oggetti, partiamo dal concetto che il database è il nostro punto iniziale di sviluppo e che il modello ne è una diretta conseguenza. Ogni volta che dobbiamo modificare qualcosa, prima modifichiamo il database e poi usiamo il designer per aggiornare il modello di conseguenza.

Quando utilizziamo l'approccio Code-First con Entity Framework, una delle problematiche da affrontare è l'aggiornamento del database al variare del nostro modello a oggetti. Infatti, ogni volta che aggiungiamo, eliminiamo o modifichiamo una proprietà da una classe, non abbiamo modo di allineare il database alla nostra modifica se non eliminando e ricreando il database a ogni esecuzione od ogni volta che il modello cambia.

Cancellare e ricreare un database può essere comodo in fase di test, ma di certo non è una via percorribile nè durante lo sviluppo nè in ambiente di produzione in quanto perdiamo tutti i dati che avevamo nel database.

La soluzione migliore è quella che ci permette di allineare il database alle nostre modifiche al modello in maniera incrementale, ovvero andando ad aggiornare il database aggiungendo, modificando, eliminando tabelle o colonne. In questo modo possiamo aggiornare il database e mantenere i dati in esso esistenti. Questa soluzione ci viene offerta da Code-First Migrations che è una nuova funzionalità introdotta con Entity Framework Code-First che è l'oggetto di quest'articolo.

Scaricare Entity Framework 4.3

Il primo passo per utilizzare Code-First Migrations è installare Entity Framework 4.3. A partire dalla versione 4.2, Entity Framework è scaricabile solo tramite NuGet. Se NuGet non è installato sulla macchina bisogna installarlo tramite la finestra Extension Manager di Visual Studio.

Una volta installato NuGet, creiamo il nostro progetto (una console application in questo caso), clicchiamo con il tasto destro sulla soluzione nella finestra Solution Explorer e selezioniamo dal menu la voce Manage NuGet Packages come nella prossima figura.

A questo punto si apre la finestra di NuGet all'interno della quale selezioniamo il tab Online dal menu di sinistra e nella textbox di ricerca in alto a destra scriviamo Entity Framework. NuGet ricerca tutti i plugin nel repository di NuGet che contengano Entity Framework e restituisce la lista dei plugin così come nella figura 2.

Ora non dobbiamo fare altro che cliccare sul tasto Install accanto ad Entity Framework e nella finestra che si apre selezionare i progetti a cui aggiungere Entity Framrework. Alla fine del processo NuGet installerà l'ultima versione di Entity Framework nella soluzione ed aggiungerà ai progetti scelti il riferimento ad Entity Framework stesso. Fatto questo siamo pronti a partire con una applicazione di esempio.

La creazione del modello

Supponiamo di voler creare un modello che gestisca tutti i nostri clienti. In questo caso dobbiamo creare una classe (Customer) che contiene i dati di ogni singolo cliente. Creiamo la classe nel nostro progetto e aggiungiamo le proprietà relative ad id, nome e indirizzo così come mostrato nel seguente codice.

public class Customer
{
  public int Id { get; set; }
  public string Name { get; set; }
  public string ShippingAddress { get; set; }
}

Una volta create la classe, dobbiamo creare il contesto per mapparla sul database. Grazie alle convenzioni di Code-First non dobbiamo scrivere alcun codice di mapping in quanto la proprietà Id viene automaticamente riconosciuta come chiave primaria e autoincrementante. Di conseguenza, l'unica cosa da fare è creare la classe che eredita da DbContext ed aggiungere il DbSet che espone i clienti così come nel seguente codice.

public class MyContext : DbContext
{
  public DbSet<Customer> Customers { get; set; }
}

Il nostro modelloè ora pronto per essere persistito sul database, ma non abbiamo ancora un database a disposizione. Ed è qui che comincia la magia di Code-First Migration.

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