Cvičení – zpětná analýza z existující databáze

Dokončeno

Manažer společnosti Contoso Pizza vás požádal o přidání koncového bodu, aby společnost v aplikaci zobrazovala kupóny. Kupóny se nacházejí v existující databázi. V této lekci vytvoříte generování uživatelského rozhraní z existující databáze a upravíte výslednou třídu entity.

Kontrola databáze povýšení

Podívejte se na databázi, kterou použijete k vygenerování vygenerovaného kódu:

  1. V podokně Průzkumník rozbalte adresář Povýšení, klikněte pravým tlačítkem myši na soubor Promotions.db a pak vyberte Otevřít databázi.

    Nová databáze se otevře ve složce Průzkumníka SQLite.

  2. Ve složce Průzkumník SQLite rozbalte uzly Promotions.db a Kupóny. Všimněte si schématu dat.

  3. Klikněte pravým tlačítkem myši na uzel Kupóny a vyberte Zobrazit tabulku. Zkontrolujte data kupónů.

Generování kontextu propagačních akcí a modelu kupónů

Teď použijete databázi k vygenerování kódu:

  1. Spusťte následující příkaz:

    dotnet ef dbcontext scaffold "Data Source=Promotions/Promotions.db" Microsoft.EntityFrameworkCore.Sqlite --context-dir Data --output-dir Models   
    

    Předchozí příkaz:

    • Generování uživatelského rozhraní DbContext a třídy modelů pomocí poskytnutého připojovací řetězec
    • Určuje použití Microsoft.EntityFrameworkCore.Sqlite zprostředkovatele databáze.
    • Určuje adresáře pro výsledné DbContext třídy a třídy modelu.

    Poznámka:

    V tomto cvičení můžete upozornění na připojovací řetězec ve zdrojovém kódu ignorovat. V reálném kódu vždy uložte své připojovací řetězec do zabezpečeného umístění.

  2. Otevřete Model\Coupon.cs a zkontrolujte vygenerovaný model.

    using System;
    using System.Collections.Generic;
    
    namespace ContosoPizza.Models
    {
        public partial class Coupon
        {
            public int Id { get; set; }
            public string Description { get; set; } = null!;
            public DateOnly? Expiration { get; set; }
        }
    }
    

    Vzhledem k tomu, že SQLite má v porovnání s jazykem C# omezenou sadu typů, nástroj pro generování uživatelského rozhraní vytvořil odvození typů jazyka C#, které se mají použít. Například sloupec databáze byl definován jako řetězec, Expiration protože SQLite nemá datový typ kalendářního data. Nástroj pro generování uživatelského rozhraní odvodil, že typ jazyka C# by měl být DateOnly? založený na datech v databázi.

    Tip

    Pokud se databáze změní, můžete vygenerovat nové vygenerované soubory. Vygenerované soubory se pokaždé přepíšou, ale vytvoří se jako partial třídy, takže je můžete rozšířit o vlastní vlastnosti a chování ve vlastních samostatných souborech.

Přidání koncového bodu kupónu

Než budete moct vygenerovaný kód otestovat, musíte do rozhraní API přidat koncový bod. V dalším kroku přidáte nový kontroler rozhraní API.

Pokud chcete lépe pochopit, jak fungují kontrolery rozhraní API, přečtěte si téma Vytvoření webového rozhraní API s řadiči ASP.NET Core.

  1. Do složky Kontrolery přidejte soubor s názvem CouponController.cs, který obsahuje následující kód:

    using ContosoPizza.Data;
    using ContosoPizza.Models;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.EntityFrameworkCore;
    
    namespace ContosoPizza.Controllers;
    
    [ApiController]
    [Route("[controller]")]
    public class CouponController : ControllerBase
    {
        PromotionsContext _context;
    
        public CouponController(PromotionsContext context)
        {
            _context = context;
        }
    
        [HttpGet]
        public IEnumerable<Coupon> Get()
        {
            return _context.Coupons
                .AsNoTracking()
                .ToList();
        }
    }
    

    Tento kód přidá api/coupon koncový bod do rozhraní API.

    V předchozím kódu:

    • Objekt PromotionsContext se vloží do konstruktoru.
    • Metoda Get vrátí všechny kupóny.
  2. V Program.cs nahraďte // Add the PromotionsContext komentář následujícím kódem:

    builder.Services.AddSqlite<PromotionsContext>("Data Source=Promotions/Promotions.db");
    

    Tento kód se zaregistruje PromotionsContext v systému injektáže závislostí.

  3. Uložte všechny změny a spusťte aplikaci pomocí dotnet run.

Testování koncového bodu

Teď, když je koncový bod přidaný, otestujte kuponové operace:

  1. Přejděte do uživatelského rozhraní Swagger rozhraní API, jako jste to udělali v předchozím cvičení (nebo aktualizujte existující uživatelské rozhraní v prohlížeči).

  2. Pod nadpisem Kupón rozbalte operaci GET a vyberte tlačítko Vyzkoušet.

  3. Vyberte Provést. Tělo odpovědi zobrazuje kupóny z databáze:

    [
    {
        "id": 1,
        "description": "Buy 1 get 1 free",
        "expiration": "2025-01-01T00:00:00"
    },
    {
        "id": 2,
        "description": "4 large pizzas for $40",
        "expiration": "2024-06-30T00:00:00"
    }
    ]
    

    Všimněte si, že expiration je hodnota datetime.

A je to! Vytvořili jste a upravili generování uživatelského rozhraní z existující databáze.