Exercici: Addició d'un magatzem de dades
Abans de començar a implementar una API web per a pizzes, cal tenir un magatzem de dades on pot realitzar operacions.
Necessita una classe modelper representar una pizza a l'inventari. El model conté propietats que representen les característiques duna pizza. El model es fa servir per passar dades a l'API web i per conservar opcions de pizza al magatzem de dades.
En aquesta unitat, aquest magatzem de dades és un servei d'emmagatzematge de memòria cau en memòria local simple. En una aplicació real es considera l'ús d'una base de dades, com ara SQL Server, amb Entity Framework Core.
Creació d´un model de pizza
Executeu la següent ordre per crear una carpeta Models :
Bashmkdir ModelsSeleccioneu la carpeta Models al Visual Studio Code i afegiu un fitxer de nom Pizza.cs nou .

L'arrel del projecte ara conté un directori Models amb un fitxer Pizza.cs buit. El nom del directori Models és una convenció. El nom del directori procedeix de l'arquitectura Model-Vista- Controlador que utilitza l'API web.
Afegiu el codi següent a Models/Pizza.cs i deseu els canvis. Aquesta classe defineix una pizza.
C#namespace ContosoPizza.Models; public class Pizza { public int Id { get; set; } public string? Name { get; set; } public bool IsGlutenFree { get; set; } }
Incorporació d'un servei de dades
Executeu l'ordre següent per crear una carpeta Services .
Bashmkdir ServicesSeleccioneu la carpeta al Visual Studio Code i afegiu un nou fitxer de nom PizzaService.cs .

Afegiu el codi següent a Services/PizzaService.cs i deseu els canvis. Aquest codi crea un servei de dades de pizza en memòria.
C#using ContosoPizza.Models; namespace ContosoPizza.Services; public static class PizzaService { static List<Pizza> Pizzas { get; } static int nextId = 3; static PizzaService() { Pizzas = new List<Pizza> { new Pizza { Id = 1, Name = "Classic Italian", IsGlutenFree = false }, new Pizza { Id = 2, Name = "Veggie", IsGlutenFree = true } }; } public static List<Pizza> GetAll() => Pizzas; public static Pizza? Get(int id) => Pizzas.FirstOrDefault(p => p.Id == id); public static void Add(Pizza pizza) { pizza.Id = nextId++; Pizzas.Add(pizza); } public static void Delete(int id) { var pizza = Get(id); if(pizza is null) return; Pizzas.Remove(pizza); } public static void Update(Pizza pizza) { var index = Pizzas.FindIndex(p => p.Id == pizza.Id); if(index == -1) return; Pizzas[index] = pizza; } }Aquest servei proporciona un servei senzill d'emmagatzematge en memòria cau de dades en memòria amb dues pizzes per defecte. La nostra API web utilitza aquest servei amb fins de demostració. Quan s'atura i s'inicia l'API web, la memòria cau de dades en memòria es restableix a les dues pizzes predeterminades del constructor de
PizzaService.
Compilació del projecte d'API web
Executeu l'ordre següent per compilar l'aplicació:
dotnet build
La compilació s'executa correctament sense advertiments. Si es produeix un error a la compilació, comproveu la sortida per obtenir informació per solucionar problemes.
A la unitat següent, creareu un controlador que utilitzarà el model Pizzai la classe PizzaService.