Usare Migrazioni Code First per eseguire il seeding del database

Scaricare il progetto completato

In questa sezione si userà Migrazioni Code First in Entity Framework per eseguire il seeding del database con i dati di test.

Dal menu Strumenti selezionare Gestione pacchetti NuGet e quindi console di Gestione pacchetti. Nella finestra Console di gestione pacchetti immettere il comando seguente:

Enable-Migrations

Questo comando aggiunge una cartella denominata Migrations al progetto, oltre a un file di codice denominato Configuration.cs nella cartella Migrations.

Screenshot del Esplora soluzioni che mostra la gerarchia di cartelle con il file configuration dot c s evidenziato in blu.

Aprire il file Configuration.cs. Aggiungere l'istruzione using seguente.

using BookService.Models;

Aggiungere quindi il codice seguente al metodo Configuration.Seed :

protected override void Seed(BookService.Models.BookServiceContext context)
{
    context.Authors.AddOrUpdate(x => x.Id,
        new Author() { Id = 1, Name = "Jane Austen" },
        new Author() { Id = 2, Name = "Charles Dickens" },
        new Author() { Id = 3, Name = "Miguel de Cervantes" }
        );

    context.Books.AddOrUpdate(x => x.Id,
        new Book() { Id = 1, Title = "Pride and Prejudice", Year = 1813, AuthorId = 1, 
            Price = 9.99M, Genre = "Comedy of manners" },
        new Book() { Id = 2, Title = "Northanger Abbey", Year = 1817, AuthorId = 1, 
            Price = 12.95M, Genre = "Gothic parody" },
        new Book() { Id = 3, Title = "David Copperfield", Year = 1850, AuthorId = 2, 
            Price = 15, Genre = "Bildungsroman" },
        new Book() { Id = 4, Title = "Don Quixote", Year = 1617, AuthorId = 3, 
            Price = 8.95M, Genre = "Picaresque" }
        );
}

Nella finestra Console di Gestione pacchetti digitare i comandi seguenti:

Add-Migration Initial
Update-Database

Il primo comando genera il codice che crea il database e il secondo comando esegue tale codice. Il database viene creato in locale usando LocalDB.

Screenshot della finestra Console di Gestione pacchetti con le righe Abilita migrazioni, Aggiungi iniziali migrazione e Aggiorna database in rosso.

Esplorare l'API (facoltativo)

Premere F5 per eseguire l'applicazione in modalità debug. Visual Studio avvia IIS Express ed esegue l'app Web. Visual Studio avvia quindi un browser e apre la home page dell'app.

Quando Visual Studio esegue un progetto Web, assegna un numero di porta. Nell'immagine seguente il numero di porta è 50524. Quando si esegue l'applicazione, verrà visualizzato un numero di porta diverso.

Screenshot della finestra dell'applicazione avviata da Visual Studio in modalità di debug con il collegamento A P I cerchiato in rosso ed evidenziato con una freccia rossa.

La home page viene implementata usando ASP.NET MVC. Nella parte superiore della pagina è presente un collegamento che indica "API". Questo collegamento consente di visualizzare una pagina della Guida generata automaticamente per l'API Web. Per informazioni su come viene generata questa pagina della Guida e su come aggiungere la propria documentazione alla pagina, vedere Creazione di pagine della Guida per API Web ASP.NET. È possibile fare clic sui collegamenti alla pagina della Guida per visualizzare i dettagli sull'API, inclusi il formato di richiesta e risposta.

Screenshot della pagina della Guida generata automaticamente che mostra un elenco di collegamenti alla documentazione per le funzionalità api.

L'API abilita le operazioni CRUD nel database. Di seguito viene riepilogato l'API.

Autori Descrizione
API/autori GET Ottenere tutti gli autori.
GET api/authors/{id} Ottenere un autore in base all'ID.
POST /api/authors Creare un nuovo autore.
PUT /api/authors/{id} Aggiornare un autore esistente.
DELETE /api/authors/{id} Eliminare un autore.
Libri Descrizione
GET /api/books Ottieni tutti i libri.
GET /api/books/{id} Ottenere un libro in base all'ID.
POST /api/books Creare un nuovo libro.
PUT /api/books/{id} Aggiornare un libro esistente.
DELETE /api/books/{id} Eliminare un libro.

Visualizzare il database (facoltativo)

Quando è stato eseguito il comando Update-Database, EF ha creato il database e ha chiamato il Seed metodo . Quando si esegue l'applicazione in locale, EF usa LocalDB. È possibile visualizzare il database in Visual Studio. Dal menu Visualizza selezionare Esplora oggetti di SQL Server.

Screenshot del server S Q L Esplora oggetti che mostra l'elemento S Q L Server evidenziato in blu e l'elemento Add S Q L Server evidenziato in giallo.

Nella finestra di dialogo Connetti al server digitare "(localdb)\v11.0 nella casella di modifica Nome server ". Lasciare l'opzione Autenticazione di Windows come "Autenticazione di Windows". Fare clic su Connetti.

Screenshot della finestra di dialogo Connetti al server che mostra il testo locale d b v 11 punto 0 nel campo Nome server e evidenziato in blu.

Visual Studio si connette a LocalDB e mostra i database esistenti nella finestra SQL Server Esplora oggetti. È possibile espandere i nodi per visualizzare le tabelle create da Entity Framework.

Screenshot del server S Q L Esplora oggetti che mostra la gerarchia di cartelle con l'elemento Book Service Context evidenziato in blu.

Per visualizzare i dati, fare clic con il pulsante destro del mouse su una tabella e scegliere Visualizza dati.

Screenshot del server S Q L Esplora oggetti che mostra l'elemento d b o dot Books evidenziato in blu e l'elemento Visualizza dati evidenziato in giallo.

Lo screenshot seguente mostra i risultati per la tabella Books. Si noti che EF ha popolato il database con i dati di inizializzazione e la tabella contiene la chiave esterna nella tabella Authors.

Screenshot della tabella Books che mostra il database popolato con i dati di inizializzazione e la tabella contenente la chiave esterna.