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 ve své 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 propagačních akcí

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

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

    Nová databáze se otevře ve složce SQLite Explorer .

  2. Ve složce SQLite Explorer rozbalte uzly Promotions.db a Coupons . Poznamenejte si schéma dat.

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

Generování kontextu propagačních akcí a kuponového modelu

Teď pomocí databáze vygenerujete kód:

  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í zadaného připojovacího řetězce
    • Určuje, že se má použít Microsoft.EntityFrameworkCore.Sqlite poskytovatel 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 ukládejte připojovací řetězce na bezpečném místě.

  2. Otevřete Models\Coupon.cs. Vlastnost Expiration je definovaná jako řetězec, protože SQLite nemá datový typ datetime. Expiration Změňte typ z string? na DateTime. EF Core spravuje převod dat datetime na řetězcová data.

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

    Tip

    Pokud se databáze změní, můžete vygenerovat nové vygenerované soubory. Vygenerované soubory jsou pokaždé přepsány, ale jsou vytvořeny 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 tedy přidáte nový kontroler rozhraní API.

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

  1. Do složky Controllers 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 je vložen do konstruktoru.
    • Metoda Get vrátí všechny kupóny.
  2. V souboru 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 registruje PromotionsContext v systému injektáže závislostí.

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

Testování koncového bodu

Teď, když je koncový bod přidaný, otestujte operace kupónů:

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

  2. Pod nadpisem Kupón rozbalte operaci GET a vyberte Vyzkoušet.

  3. Vyberte Execute (Provést). V textu odpovědi se zobrazí 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 to je vše! Vytvořili jste a upravili generování uživatelského rozhraní z existující databáze.