• Tidak ada hasil yang ditemukan

83 Tujuan dari penggunaan template ini agar pembaca nantinya memiliki pengetahuan bagaimana memodifikasi template tersebut agar bisa digunakan dalam membangun aplikasi web dengan ASP.NET Core.

Template admin yang digunakan pada buku ini adalah Gentellela yang menggunakan framework Bootstrap 3. Template ini dapat diunduh dari link berikut

https://github.com/puikinsh/gentelella. Cara untuk mengubah template ini agar bisa

digunakan pada aplikasi web ASP.NET Core akan dijelaskan pada sub bab View.

Database

Aplikasi book store ini akan menggunakan database baru dengan nama bookstore yang memiliki fitur sebagai berikut:

1. Mengelola pengarang. 2. Mengelola kategori buku. 3. Mengelola buku.

Dari fitur-fitur tersebut diperlukan database dengan tabel-tabel sebagai berikut.

Gambar 74. Tabel BookStore.

Langkah pertama adalah terhubung dengan MySQL server dengan menggunakan Visual Studio Code dengan menekan tombol ctrl+shift+P. Kemudian ketik “SQL: Connect to MySQL Server”. Kemudian masukkan nama server, username dan password. Kemudian tekan tombol ctrl+Q untuk mengeksekusi query, kemudian ketikan query berikut untuk membuat database dengan nama corebookstore.

create database corebookstore

Selanjutnya dengan cara yang sama jalankan query-query beirkut untuk membuat table-tabel di atas.

create table authors (

author_id int not null auto_increment, name varchar(256),

email varchar(256), primary key (author_id)

);

create table categories (

category_id int not null auto_increment, name varchar(256),

84

primary key (category_id) );

create table books (

isbn int not null, category_id int, title text, photo varchar(256), publish_date date, price float, qty int, primary key (isbn)

);

create table books_authors (

isbn int not null, author_id int not null, primary key (isbn, author_id) );

Sedangkan untuk membuat relasi antar tabel digunakan query-query berikut ini.

alter table books add constraint FK_REFERENCE_2 foreign key (category_id) references categories (category_id) on delete restrict on update restrict; alter table books_authors add constraint FK_REFERENCE_3 foreign key (isbn) references books (isbn) on delete restrict on update restrict;

alter table books_authors add constraint FK_REFERENCE_4 foreign key (author_id) references authors (author_id) on delete restrict on update restrict;

Langkah selanjutnya adalah membuat model yang akan diterangkan pada sub bab berikutnya.

Membuat Project

Nama project yang akan dibuat adalah EFCoreBookStore dengan cara menggunaka perintah berikut ini.

dotnet new web -o EFCoreBookStore

Selanjutnya memodifikasi file-file berikut ini agar mempunyai isi yang sama seperti isi file yang dimiliki pada project EFCoreGuestBook.

1. EFCoreBookStore.csproj dimodifikasi agar isinya sama dengan EFCoreGuestBook.csproj.

2. Startup.cs.

Kemudian ganti nilai namespace EFCoreGuestBook menjadi EFCoreBookStore. Berikut adalah isi lengkap file Startup.cs pada project ini.

Startup.cs using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Configuration; using EFCoreBookStore.Models; namespace EFCoreBookStore

85

{

public class Startup {

public static IConfigurationRoot Configuration { get; set; } public Startup(IHostingEnvironment env)

{

var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath)

.AddJsonFile("appsettings.json", optional: true,

reloadOnChange: true)

.AddEnvironmentVariables(); Configuration = builder.Build(); }

// This method gets called by the runtime. Use this method to add services to the container.

// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940

public void ConfigureServices(IServiceCollection services) {

services.AddMvc();

BookStoreDataContext.ConnectionString =

Configuration.GetConnectionString("Default"); }

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)

{ loggerFactory.AddConsole(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); } } }

Membuat File appsettings.json

Modifikasi file appsetting.json untuk melakukan koneksi ke database yang baru saja dibuat pada langkah di atas.

appsettings.json {

"ConnectionStrings": {

86 "Default": "server=localhost;userid=root;password=rahasia;database=corebookstore;SslM ode=None" } }

Membuat File GuestBookDataContext.cs

Langkah pertama adalah membuat BookStoreDataContext.cs yang disimpan pada folder Models. Kemudian mengganti isi filenya menjadi seperti berikut ini.

BookStoreDataContext.cs

using Microsoft.EntityFrameworkCore;

using MySQL.Data.EntityFrameworkCore.Extensions; namespace EFCoreGuestBook.Models{

public class BookStoreDataContext : DbContext {

public static string ConnectionString { get; set; }

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

{

optionsBuilder.UseMySQL(ConnectionString); }

protected override void OnModelCreating(ModelBuilder modelBuilder) { } } }

Model

Pada bab sebelumnya telah dibuat sebuah class model yaitu class GuestBook. Pada contoh pertama, class model GuestBook hanya digunakan untuk melakukan pertukaran data antar komponen MVC tanpa ada pengambilan data dari database. Kemudian pada contoh berikutnya class model GuestBook dimodifikasi agar memiliki property-property yang sesuai dengan atribut-atribut pada tabel, dan digunakan untuk menampung data dari database untuk ditampilkan pada komponen view. Class ini juga digunakan untuk menampung data dari komponen view untuk akhirnya disimpan ke dalam database.

Dari contoh-contoh tersebut, dalam bahasa sederhana maka dapat disimpulkan class model berfungsi sebagai penampung data dalam proses pertukaran data.

Pada bab ini akan dijelaskan bagaimana membuat model untuk kebutuhan menampung data dan memanfaatkan model untuk operasi database. Selain itu juga akan diberikan fungsi model lainnya yang dapat digunakan untuk label yang ditampilkan pada form atau header tabel pada komponen view. Selain itu juga cara pemanfaatan validasi pada form di komponen view.

Sebagaimana pada bab sebelumnya, class-class model yang dibuat pada sub bab ini akan disimpan di dalam folder Models pada project.

API

Pada bab sebelumnya telah diperlihatkan cara membuat komponen model dalam bentuk class model yaitu class GuestBook. Class model GuestBook adalah class model yang sederhana.

87 Pada bab ini akan dijelaskan cara untuk membuat class model dengan menggunakan konfigurasi yang lebih lengkap untuk membangun komponen model yang mendukung relational database, validasi dan label pada antarmuka komponen view.

Untuk melakukan konfigurasi tersebut dapat digunakan dua library atau API, yaitu: 3. Data annotations.

4. Fluent API.

Dokumen terkait