Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Scaricare il progetto completato
In questa sezione verranno aggiunte classi di modello che definiscono le entità di 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# che corrispondono alle tabelle di database e EF crea il database. Per altre informazioni, vedere Approcci allo sviluppo di Entity Framework.
Per iniziare, definiamo gli oggetti di dominio come oggetti POCO (oggetti CLR semplici). Verranno creati i seguenti POCO:
- Autore
- Libro
In Esplora soluzioni fare clic con il pulsante destro del mouse sulla cartella Modelli. Selezionare Aggiungi e quindi Classe. Assegnare alla classe Authoril nome .
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 usare la proprietà di navigazione per accedere al codice correlato Author . Ho detto 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 operazioni CRUD (creazione, lettura, aggiornamento ed eliminazione). I controller useranno Entity Framework per comunicare con il livello del database.
Prima di tutto, è possibile eliminare i controller/ValuesController.cs file. Questo file contiene un esempio di controller API Web, 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 con il pulsante destro del mouse sulla cartella Controllers. Selezionare Aggiungi e quindi Controller.
Nella finestra di dialogo Aggiungi scaffolding, selezionare "Controller Web API 2 con azioni, utilizzando Entity Framework". Fare clic su Aggiungi.
Nella finestra di dialogo Aggiungi controller eseguire le operazioni seguenti:
- Nell'elenco a discesa Classe modello selezionare la
Authorclasse . Se non lo vedi nell'elenco a discesa, assicurati di aver costruito il progetto. - Selezionare "Use async controller actions" (Usa azioni del controller asincrone).
- Lasciare il nome del controller "AuthorsController".
- Fare clic sul pulsante "più" (+) accanto alla Classe del 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:
-
AuthorsControllerdefinisce un controller API Web. Il controller implementa l'API REST usata dai client per eseguire operazioni CRUD nell'elenco degli autori. -
BookServiceContextgestisce gli oggetti entità durante l'esecuzione, che include 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.