Latihan - Reverse-engineer dari database yang ada

Selesai

Manajer Contoso Pizza telah meminta Anda untuk menambahkan titik akhir sehingga perusahaan dapat menampilkan kupon di aplikasinya. Kupon berada di database yang ada. Dalam unit ini, Anda membuat perancah dari database yang ada dan memodifikasi kelas entitas yang dihasilkan.

Memeriksa database promosi

Lihat database yang akan Anda gunakan untuk menghasilkan kode perancah:

  1. Pada panel Explorer , perluas direktori Promosi , klik kanan file Promotions.db , lalu pilih Buka Database.

    Database baru terbuka di folder SQLite Explorer .

  2. Di folder SQLite Explorer , perluas simpul Promotions.db dan Kupon . Perhatikan skema data.

  3. Klik kanan node Kupon dan pilih Tampilkan tabel. Periksa data kupon.

Menyusun konteks promosi dan model kupon

Sekarang, Anda menggunakan database untuk membuat perancah kode:

  1. Jalankan perintah berikut:

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

    Perintah sebelumnya:

    • Perancah DbContext dan kelas model dengan menggunakan string koneksi yang disediakan.
    • Menentukan untuk menggunakan Microsoft.EntityFrameworkCore.Sqlite penyedia database.
    • Tentukan direktori untuk DbContext dan kelas model yang dihasilkan.

    Catatan

    Dalam latihan ini, Anda dapat mengabaikan peringatan tentang string koneksi Anda berada dalam kode sumber. Dalam kode dunia nyata, selalu simpan string koneksi Anda di lokasi yang aman.

  2. Buka Models\Coupon.cs. Properti Expiration didefinisikan sebagai string karena SQLite tidak memiliki jenis data tanggalwaktu. Expiration Ubah jenis dari string? menjadi DateTime. EF Core mengelola konversi data tanggalwaktu ke data string.

    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

    Jika database berubah, Anda dapat membuat file perancah baru. File yang dihasilkan ditimpa setiap kali, tetapi dibuat sebagai partial kelas, sehingga Anda dapat memperluasnya dengan properti dan perilaku kustom dalam file terpisah Anda sendiri.

Menambahkan titik akhir kupon

Sebelum dapat menguji kode perancah, Anda perlu menambahkan titik akhir ke API. Selanjutnya, Anda menambahkan pengontrol API baru.

Untuk lebih memahami cara kerja pengontrol API, lihat Membuat API web dengan pengontrol ASP.NET Core.

  1. Di folder Pengontrol , tambahkan file bernama CouponController.cs yang berisi kode berikut:

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

    Kode ini menambahkan api/coupon titik akhir ke API.

    Dalam kode sebelumnya:

    • Objek PromotionsContext disuntikkan ke konstruktor.
    • Metode Get mengembalikan semua kupon.
  2. Di Program.cs, ganti komentar // Add the PromotionsContext dengan kode berikut:

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

    Kode ini mendaftar PromotionsContext dengan sistem injeksi dependensi.

  3. Simpan semua perubahan Anda dan jalankan aplikasi dengan menggunakan dotnet run.

Menguji titik akhir

Sekarang setelah titik akhir ditambahkan, uji operasi kupon:

  1. Buka antarmuka pengguna Swagger API seperti yang Anda lakukan di latihan sebelumnya (atau refresh UI yang ada di browser Anda).

  2. Di bawah judul Kupon , perluas operasi GET dan pilih Cobalah.

  3. Pilih Jalankan. Isi respons menunjukkan kupon dari database:

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

    Perhatikan bahwa expiration adalah nilai tanggalwaktu.

Selesai! Anda telah membuat dan mengubah perancah dari database yang ada!