Gyakorlat – Visszafejtés meglévő adatbázisból

Befejeződött

A Contoso Pizza vezetője arra kérte Önt, hogy adjon hozzá egy végpontot, hogy a vállalat megjeleníthesse a kuponokat az alkalmazásában. A kuponok egy meglévő adatbázisban találhatók. Ebben a leckében egy meglévő adatbázisból hoz létre állványzatot, és módosítja az eredményként kapott entitásosztályt.

A promóciós adatbázis vizsgálata

Tekintse meg azt az adatbázist, amelyet az állványozott kód létrehozásához fog használni:

  1. Az Explorer panelen bontsa ki a Promotions könyvtárat, kattintson a jobb gombbal a Promotions.db fájlra, majd válassza az Adatbázis megnyitása parancsot.

    Az új adatbázis az SQLite Explorer mappában nyílik meg.

  2. Az SQLite Explorer mappában bontsa ki a Promotions.db és a Kuponok csomópontot. Jegyezze fel az adatsémát.

  3. Kattintson a jobb gombbal a Kuponok csomópontra, és válassza a Tábla megjelenítése lehetőséget. Vizsgálja meg a kuponadatokat.

Az akciók környezetének és a kuponmodellnek a kikövetkeztetése

Most az adatbázissal fogja generálni a kódot:

  1. Futtassa az alábbi parancsot:

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

    A fenti parancs a következőket hajtja végre:

    • Állványok és modellosztályok DbContext a megadott kapcsolati sztring használatával.
    • Az adatbázis-szolgáltató használatát Microsoft.EntityFrameworkCore.Sqlite adja meg.
    • Megadja az eredményként kapott DbContext és a modellosztályok könyvtárait.

    Megjegyzés

    Ebben a gyakorlatban figyelmen kívül hagyhatja a kapcsolati sztring forráskódban való használatával kapcsolatos figyelmeztetést. Valós kódban mindig biztonságos helyen tárolja a kapcsolati sztringeket.

  2. Nyissa meg a Models\Coupon.cs fájlt. A Expiration tulajdonság sztringként van definiálva, mert az SQLite nem rendelkezik datetime adattípussal. Módosítsa a típust a Expirationstring? következőre: DateTime. Az EF Core kezeli a datetime-adatok sztringadatokké való átalakítását.

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

    Tipp

    Ha az adatbázis megváltozik, új, szerkezetű fájlokat hozhat létre. A létrehozott fájlokat a rendszer minden alkalommal felülírja, de osztályként partial hozza létre őket, így egyéni tulajdonságokkal és viselkedéssel bővítheti őket saját, különálló fájlokban.

Kuponvégpont hozzáadása

Az állványozott kód tesztelése előtt hozzá kell adnia egy végpontot az API-hoz. A következő lépésben egy új API-vezérlőt ad hozzá.

Az API-vezérlők működésének jobb megismeréséhez lásd: Webes API létrehozása ASP.NET Core vezérlőkkel.

  1. A Controllers mappában adjon hozzá egy CouponController.cs nevű fájlt, amely a következő kódot tartalmazza:

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

    Ez a kód hozzáad egy végpontot api/coupon az API-hoz.

    A fenti kód a következőket végzi el:

    • A PromotionsContext rendszer beszúr egy objektumot a konstruktorba.
    • A Get metódus az összes kupont visszaadja.
  2. A Program.cs fájlban cserélje le a // Add the PromotionsContext megjegyzést a következő kódra:

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

    Ez a kód regisztrálja a függőséginjektálási PromotionsContext rendszert.

  3. Mentse az összes módosítást, és futtassa az alkalmazást a használatával dotnet run.

A végpont tesztelése

Most, hogy hozzáadta a végpontot, tesztelje a kuponműveleteket:

  1. Lépjen az API Swagger felhasználói felületére, ahogyan egy korábbi gyakorlatban tette (vagy frissítse a meglévő felhasználói felületet a böngészőben).

  2. A Kupon fejléc alatt bontsa ki a GET műveletet, és válassza a Kipróbálás lehetőséget.

  3. Válassza a Végrehajtás lehetőséget. A válasz törzse az adatbázisból származó kuponokat jeleníti meg:

    [
    {
        "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"
    }
    ]
    

    Vegye figyelembe, hogy expiration ez egy datetime érték.

Ennyi az egész! Létrehozott és módosított egy állványzatot egy meglévő adatbázisból!