Cvičení – zpětná analýza z existující databáze
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:
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.
Ve složce Průzkumník SQLite rozbalte uzly Promotions.db a Kupóny. Všimněte si schématu dat.
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:
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í.
- Generování uživatelského rozhraní
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ýtDateOnly?
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.
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.
- Objekt
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í.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:
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).
Pod nadpisem Kupón rozbalte operaci GET a vyberte tlačítko Vyzkoušet.
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.