Gyakorlat – Visszafejtés meglévő adatbázisból
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:
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.
Az SQLite Explorer mappában bontsa ki a Promotions.db és a Kuponok csomópontot. Jegyezze fel az adatsémát.
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:
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.
- Állványok és modellosztályok
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 aExpiration
string?
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.
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.
- A
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.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:
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).
A Kupon fejléc alatt bontsa ki a GET műveletet, és válassza a Kipróbálás lehetőséget.
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!