Proyek Blazor Server #2

CRUD menggunakan Dapper untuk tabel yang merujuk ke tabel lain

M. Ramadhan
Telematika
10 min readAug 27, 2020

--

CRUD (Create, Read, Update, Delete) merupakan fitur yang harus ada pada aplikasi yang menggunakan basis data. Di artikel sebelumnya, kita membahas operasi CRUD untuk satu tabel, yaitu tabel Publisher.

Artikel ini membahas operasi CRUD yang melibatkan dua tabel, tabel Book dan Publisher, dengan relationship N:1 (banyak-ke-satu) sebagai berikut.

Tampilan Halaman CRUD

Berikut adalah halaman daftar buku yang melibatkan tabel Book dan Publisher. Empat kolom pertama adalah kolom tabel Book, dan kolom kelima adalah kolom tabel Publisher.

  • Daftar buku diurutkan mengecil (descending) berdasarkan Purchase Date. Dengan mengklik judul kolom Purchase Date, urutan berubah menjadi membesar (ascending). Hal yang sama berlaku untuk kolom lain.
  • Tombol navigasi:
    ke halaman sebelumnya
    ke halaman berikutnya
    1, 2, 3, ... nomor halaman
  • Untuk mencari buku berdasarkan kriteria judul, ketikkan judul di kotak Search. Judul tidak harus lengkap.
  • Untuk menambahkan data baru, klik Add new data
  • Untuk mengubah data yang ada, klik Edit
  • Untuk menghapus, klik Delete

Berikut adalah halaman untuk menambahkan data buku yang melibatkan tabel Book dan Publisher. Semua input data adalah atribut buku. Perhatikan input data terakhir, Publisher. Atribut terakhir buku tersebut dimasukkan dengan memilih dari daftar opsi Publisher yang diambil dari tabel Publisher.

Berikut adalah halaman untuk mengedit buku yang melibatkan tabel Book dan Publisher. Semua data adalah atribut buku. Perhatikan data terakhir, Publisher. Atribut terakhir buku ini diperbarui dengan memilih dari daftar opsi penerbit yang diambil dari tabel Publisher.

Tabel Book: Menambah Data dan Membuat Prosedur

Terlebih dahulu, kita perlu mengetikkan dan menjalankan skrip SQL untuk
(1) menambahkan data,
(2) membuat prosedur untuk menambahkan data baru, dan
(3) membuat prosedur untuk memperbarui data.

  • Buka SSMS.
  • Pilih nama server, klik Connect
  • Buka editor query baru dengan menekan Ctrl+Natau memilih menu:
    File| New|Query with Current Connection
  • Copy skrip, paste ke editor query.
  • Pilih menu: Query| Execute, atau tekan F5 untuk menjalankan skrip di atas.

File Pendukung Operasi CRUD

Selain skrip SQL di atas, operasi CRUD membutuhkan file entitas, interface, implementasi interface, komponen blazor, dan modifikasi kode beberapa file yang ada.

File Entitas

Ada dua file entitas, Book.cs dan BookPub.cs, ditempatkan di dalam folder Entities.

Book.cs
File Book.cs merupakan pemetaan tabel Book dalam basis data.

  • Pada jendela Solution Explorer, klik kanan Entities, lalu klik Add|Class
  • Ketik Book.cssebagai nama file, klik Add.
  • Klik Book.csuntuk membuka file, lalu copy dan paste kode berikut.

BookPub.cs
File BookPub.cs merupakan pemetaan dari tabel Book yang dijoinkan dengan dan tabel Publisher. Properti BookPub.csmewarisi properti Book.cs. Copy dan paste kode berikut.

File Interface: IBookService.cs

  • IBookService.cs mendeklarasikan metode buku, ditempatkan di folder Interfaces.
  • Dalam folder Interfaces tersebut, buat file IBookService.cs, lalu copy dan paste kode berikut.

File Metode: BookService.cs

  • BookService.csmengimplementasikan metode yang dideklarasikan dalam file IBookService.cs, ditempatkan dalam folder Data.
  • Dalam folder Data tersebut, buat file BookService.cs, lalu copy dan paste kode berikut.

File Komponen *. razor

Ada tiga file razor ditambahkan ke dalam folder Page, yaitu AddBook.razor, EditBook.razor, dan FetchBook.razor. Ketiganya berisi kode untuk I / O halaman CRUD.

AddBook.razor, digunakan untuk membuat data buku baru.

EditBook.razor, digunakan untuk memperbarui data sebuah buku.

FetchBook.razor, digunakan untuk menampilkan daftar buku.

Modifikasi Kode

File NavMenu.razor
Ubah kodenya sehingga menjadi sebagai berikut.

Startup.cs
Tambahkan layanan berikut.

Berikut adalah struktur proyek secara keseluruhan.

Referensi

--

--

M. Ramadhan
Telematika

I’m a database designer and developer, childhood in Menggala, living in Palembang.