CRUD (Create, Read, Update, Delete) merupakan fitur yang harus ada pada aplikasi yang
menggunakan basis data. Di Materi sebelumnya, kita membahas operasi CRUD untuk satu tabel,
yaitu tabel Publisher.
Materi ini membahas operasi CRUD yang melibatkan dua tabel, tabel Book dan Publisher,
dengan relationship N:1 (banyak-ke-satu) sebagai berikut. Buka Project Sebelumnya
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.
using System;
using System.ComponentModel.DataAnnotations;namespace BookApp.Entities
{
public class Book
{
[Key]
public long ISBN { get; set; }
public string Title { get; set; }
public short PubYear { get; set; }
public DateTime PurchDate { get; set; }
public int PubId { get; set; }
}
}
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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;namespace BookApp.Entities
{
public class BookPub: Book
{
public string PubName { get; set; }
}
}
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.
using BookApp.Entities;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;namespace BookApp.Interfaces
{
public interface IBookService
{
Task<long> Create(Book book);
Task<int> Delete(long Id);
Task<int> Count(string search);
Task<int> Update(Book book);
Task<Book> GetById(long Id);
Task<List<BookPub>> ListAll(int skip, int take,
string orderBy, string direction, string search);
}
}
Modifikasi Kode
File NavMenu.razor
Ubah kodenya sehingga menjadi sebagai berikut.
<div class="top-row pl-4 navbar navbar-dark">
<a class="navbar-brand" href="">Library</a>
<button class="navbar-toggler" @onclick="ToggleNavMenu">
<span class="navbar-toggler-icon"></span>
</button>
</div><div class="@NavMenuCssClass" @onclick="ToggleNavMenu">
<ul class="nav flex-column">
<li class="nav-item px-3">
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
<span class="oi oi-home" aria-hidden="true"></span> Home
</NavLink>
</li>
<li class="nav-item px-3">
<NavLink class="nav-link" href="booklist">
<span class="oi oi-book"
aria-hidden="true"></span> Books
</NavLink>
</li>
<li class="nav-item px-3">
<NavLink class="nav-link" href="publisherlist">
<span class="oi oi-list-rich"
aria-hidden="true"></span> Publishers
</NavLink>
</li>
</ul>
</div>@code {
private bool collapseNavMenu = true; private string NavMenuCssClass => collapseNavMenu ?
"collapse" : null; private void ToggleNavMenu()
{
collapseNavMenu = !collapseNavMenu;
}
}
Startup.cs
Tambahkan layanan berikut.
//Book service
services.AddScoped<IBookService, BookService>();
Berikut adalah struktur proyek secara keseluruhan.