Aggiungere modelli e controller
Scaricare il progetto completato
In questa sezione verranno aggiunte classi modello che definiscono le entità del database. Si aggiungeranno quindi controller API Web che eseguono operazioni CRUD su tali entità.
Aggiungere classi di modelli
In questa esercitazione si creerà il database usando l'approccio "Code First" a Entity Framework (EF). Con Code First si scrivono classi C# corrispondenti alle tabelle di database e EF crea il database. Per altre informazioni, vedere Approcci per lo sviluppo di Entity Framework.
Per iniziare, definiamo gli oggetti di dominio come POCO (oggetti CLR semplici). Verranno creati i poCO seguenti:
- Autore
- Book
In Esplora soluzioni fare clic con il pulsante destro del mouse sulla cartella Modelli. Selezionare Aggiungi e quindi Classe. Denominare la classe Author
.
Sostituire tutto il codice boilerplate in Author.cs con il codice seguente.
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace BookService.Models
{
public class Author
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
}
}
Aggiungere un'altra classe denominata Book
, con il codice seguente.
using System.ComponentModel.DataAnnotations;
namespace BookService.Models
{
public class Book
{
public int Id { get; set; }
[Required]
public string Title { get; set; }
public int Year { get; set; }
public decimal Price { get; set; }
public string Genre { get; set; }
// Foreign Key
public int AuthorId { get; set; }
// Navigation property
public Author Author { get; set; }
}
}
Entity Framework userà questi modelli per creare tabelle di database. Per ogni modello, la Id
proprietà diventerà la colonna chiave primaria della tabella di database.
Nella classe Book l'oggetto AuthorId
definisce una chiave esterna nella Author
tabella. (Per semplicità, presumo che ogni libro abbia un singolo autore. La classe book contiene anche una proprietà di navigazione per l'oggetto correlato Author
. È possibile utilizzare la proprietà di navigazione per accedere all'oggetto correlato Author
nel codice. Dico di più sulle proprietà di navigazione nella parte 4, gestione delle relazioni tra entità.
Aggiungere controller API Web
In questa sezione verranno aggiunti controller API Web che supportano le operazioni CRUD (creare, leggere, aggiornare ed eliminare). I controller useranno Entity Framework per comunicare con il livello del database.
In primo luogo, è possibile eliminare il file Controllers/ValuesController.cs. Questo file contiene un controller API Web di esempio, ma non è necessario per questa esercitazione.
Compilare quindi il progetto. Lo scaffolding dell'API Web usa la reflection per trovare le classi del modello, quindi richiede l'assembly compilato.
In Esplora soluzioni fare clic sulla cartella Controller. Selezionare Aggiungi e quindi Controller.
Nella finestra di dialogo Aggiungi scaffolding selezionare "Web API 2 Controller with actions, using Entity Framework". Scegliere Aggiungi.
Nella finestra di dialogo Aggiungi controller eseguire le operazioni seguenti:
- Nell'elenco a discesa Classe modello selezionare la
Author
classe . Se non viene visualizzato nell'elenco a discesa, assicurarsi di aver compilato il progetto. - Selezionare "Use async controller actions" (Usa azioni del controller asincrono).
- Lasciare il nome del controller "AuthorsController".
- Fare clic sul pulsante più (+) accanto a Classe contesto dati.
Nella finestra di dialogo Nuovo contesto dati lasciare il nome predefinito e fare clic su Aggiungi.
Fare clic su Aggiungi per completare la finestra di dialogo Aggiungi controller . La finestra di dialogo aggiunge due classi al progetto:
AuthorsController
definisce un controller API Web. Il controller implementa l'API REST usata dai client per eseguire operazioni CRUD nell'elenco degli autori.BookServiceContext
gestisce gli oggetti entità durante la fase di esecuzione, inclusi il popolamento di oggetti con dati di un database, il rilevamento delle modifiche e la persistenza dei dati nel database. Eredita daDbContext
.
A questo punto, compilare di nuovo il progetto. Eseguire ora gli stessi passaggi per aggiungere un controller API per Book
le entità. Questa volta, selezionare Book
per la classe del modello e selezionare la classe esistente BookServiceContext
per la classe del contesto dati. Non creare un nuovo contesto dati. Fare clic su Aggiungi per aggiungere il controller.