Övning – Lägga till ett datalager

Slutförd

Innan du börjar implementera ett webb-API för pizza måste du ha ett datalager där du kan utföra åtgärder.

Du behöver en model klass för att representera en pizza i ditt lager. Modellen innehåller egenskaper som representerar egenskaperna hos en pizza. Modellen används för att skicka data i webb-API:et och för att bevara pizzaalternativ i datalagret.

I den här lektionen är datalagret en enkel lokal minnesintern cachelagringstjänst. I ett verkligt program kan du överväga att använda en databas, till exempel SQL Server, med Entity Framework Core.

Skapa en pizzamodell

  1. Kör följande kommando för att skapa en modellmapp :

    mkdir Models
    

    Välj mappen Modeller i Visual Studio Code och lägg till en ny fil med namnet Pizza.cs.

    Skärmbild av att lägga till en ny fil i mappen Modeller i Visual Studio Code.

    Projektroten innehåller nu en Models katalog med en tom Pizza.cs fil. Katalognamnet Models är en konvention. Katalognamnet kommer från arkitekturen model-view-controller som webb-API:et använder.

  2. Lägg till följande kod i Models/Pizza.cs och spara ändringarna. Den här klassen definierar en pizza.

    namespace ContosoPizza.Models;
    
    public class Pizza
    {
        public int Id { get; set; }
        public string? Name { get; set; }
        public bool IsGlutenFree { get; set; }
    }
    

Lägga till en datatjänst

  1. Kör följande kommando för att skapa en tjänstmapp :

    mkdir Services
    

    Välj mappen i Visual Studio Code och lägg till en ny fil med namnet PizzaService.cs.

    Skärmbild av Visual Studio Code som visar hur du lägger till en ny fil i mappen Tjänster.

  2. Lägg till följande kod i Services/PizzaService.cs och spara ändringarna. Den här koden skapar en minnesintern pizzadatatjänst.

    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;
        }
    }
    

    Den här tjänsten tillhandahåller en enkel minnesintern datacachelagringstjänst med två pizzor som standard. Vårt webb-API använder den tjänsten i demosyfte. När du stoppar och startar webb-API:et återställs minnesintern datacachen till de två standardpizzorna från konstruktorn i PizzaService.

Skapa webb-API-projektet

Skapa appen genom att köra följande kommando:

dotnet build

Den bör skapas utan varningar. Om den inte skapas kontrollerar du felsökningsinformationen i utdata.

I nästa lektion skapar du en kontrollant som ska använda Pizza modellen och PizzaService klassen.