Übung: Hinzufügen eines Datenspeichers

Abgeschlossen

Bevor Sie mit der Implementierung einer Web-API zum Verwalten von Pizzas beginnen, benötigen Sie einen Datenspeicher, in dem Sie Vorgänge ausführen können.

Sie benötigen eine model-Klasse, um eine Pizza im Bestand darzustellen. Das Modell enthält Eigenschaften, die die Merkmale einer Pizza darstellen. Das Modell dient zur Übergabe von Daten an die Web-API und zum persistenten Speichern von Pizzaoptionen in einem Datenspeicher.

In dieser Lerneinheit ist dieser Datenspeicher ein einfacher lokaler In-Memory-Cachedienst. In einer realen Anwendung sollten Sie erwägen, eine Datenbank, z. B. SQL Server, mit Entity Framework Core einzusetzen.

Erstellen eines Pizzamodells

  1. Führen Sie den folgenden Befehl aus, um einen Ordner Models zu erstellen:

    mkdir Models
    

    Wählen Sie den Ordner Models in Visual Studio Code aus, und fügen Sie eine neue Datei namens Pizza.cs hinzu.

    Screenshot: Hinzufügen einer neuen Datei zum Ordner „Models“ in Visual Studio Code.

    Das Projektstammverzeichnis enthält jetzt das Verzeichnis Models mit der leeren Datei Pizza.cs. Der Verzeichnisname Models entspricht einer Konvention. Der Verzeichnisname stammt aus der MVC-Architektur (Model-View-Controller), die von der Web-API verwendet wird.

  2. Fügen Sie folgenden Code zu Models/Pizza.cs hinzu, und speichern Sie die Änderungen. Diese Klasse definiert eine Pizza.

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

Hinzufügen eines Datendiensts

  1. Führen Sie den folgenden Befehl aus, um einen Ordner Services zu erstellen:

    mkdir Services
    

    Wählen Sie den Ordner in Visual Studio Code aus, und fügen Sie eine neue Datei namens PizzaService.cs hinzu.

    Screenshot: Hinzufügen einer neuen Datei zum Ordner „Services“ in Visual Studio Code.

  2. Fügen Sie folgenden Code zu Services/PizzaService.cs hinzu, und speichern Sie die Änderungen. Dieser Code erstellt einen In-Memory-Pizza-Datendienst.

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

    Dieser Dienst bietet standardmäßig einen einfachen In-Memory-Cachedienst mit zwei Pizzas. Unsere Web-API verwendet diesen Dienst zu Demonstrationszwecken. Wenn Sie die Web-API beenden und starten, wird der In-Memory-Datencache vom Konstruktor von PizzaService auf die beiden Standardpizzas zurückgesetzt.

Erstellen des Web-API-Projekts

Führen Sie den folgenden Befehl aus, um die App zu erstellen:

dotnet build

Der Buildvorgang sollte erfolgreich und ohne Warnungen abgeschlossen werden. Wenn beim Buildvorgang ein Fehler auftritt, suchen Sie in der Ausgabe nach Informationen zur Problembehandlung.

In der nächsten Lerneinheit erstellen Sie einen Controller, der das Pizza-Modell und die PizzaService-Klasse verwendet.