Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Oleh Tim Perkemahan Web
Lab Langsung ini mengasumsikan Anda memiliki pengetahuan dasar tentang MVC ASP.NET. Jika Anda belum menggunakan MVC ASP.NET sebelumnya, kami sarankan Anda untuk membahas ASP.NET MVC 4 Fundamentals Hands-on Lab.
Lab ini memandu Anda melalui penyempurnaan dan fitur baru yang sebelumnya dijelaskan dengan menerapkan perubahan kecil pada sampel aplikasi Web yang disediakan di folder Sumber.
Catatan
Semua kode sampel dan cuplikan disertakan dalam Kit Pelatihan Kamp Web, tersedia di Rilis Microsoft-Web/WebCampTrainingKit. Proyek khusus untuk lab ini tersedia di ASP.NET Model MVC 4 dan Akses Data.
Di ASP.NET MVC Fundamentals Hands-on Lab, Anda telah meneruskan data yang dikodekan secara permanen dari Pengontrol ke Templat tampilan. Tetapi, untuk membangun aplikasi Web nyata, Anda mungkin ingin menggunakan database nyata.
Lab Langsung ini akan menunjukkan kepada Anda cara menggunakan mesin database untuk menyimpan dan mengambil data yang diperlukan untuk aplikasi Music Store. Untuk mencapainya, Anda akan mulai dengan database yang sudah ada dan membuat Model Data Entitas dari database tersebut. Di seluruh lab ini, Anda akan memenuhi pendekatan Database First serta pendekatan Code First .
Namun, Anda juga dapat menggunakan pendekatan Model First , membuat model yang sama menggunakan alat, lalu menghasilkan database darinya.

Database Pertama vs. Model Pertama
Setelah membuat Model, Anda akan membuat penyesuaian yang tepat di StoreController untuk menyediakan Tampilan Penyimpanan dengan data yang diambil dari database, alih-alih menggunakan data yang dikodekan secara permanen. Anda tidak perlu membuat perubahan apa pun pada templat Tampilan karena StoreController akan mengembalikan ViewModels yang sama ke templat Tampilan, meskipun kali ini data akan berasal dari database.
Pendekatan Pertama Kode
Pendekatan Code First memungkinkan kita untuk menentukan model dari kode tanpa menghasilkan kelas yang umumnya digabungkan dengan kerangka kerja.
Dalam kode terlebih dahulu, objek model didefinisikan dengan POCO, "Objek CLR Lama Biasa". POCO adalah kelas biasa sederhana yang tidak memiliki warisan dan tidak mengimplementasikan antarmuka. Kita dapat secara otomatis menghasilkan database dari mereka, atau kita dapat menggunakan database yang ada dan menghasilkan pemetaan kelas dari kode.
Manfaat menggunakan pendekatan ini adalah model tetap independen dari kerangka kerja persistensi (dalam hal ini, Kerangka Kerja Entitas), karena kelas POCO tidak digabungkan dengan kerangka pemetaan.
Catatan
Lab ini didasarkan pada ASP.NET MVC 4 dan versi aplikasi sampel Music Store yang disesuaikan dan diminimalkan agar hanya sesuai dengan fitur yang ditampilkan di Lab Hands-On ini.
Jika Anda ingin menjelajahi seluruh aplikasi tutorial Music Store , Anda dapat menemukannya di MVC-Music-Store.
Prasyarat
Anda harus memiliki item berikut untuk menyelesaikan lab ini:
- Microsoft Visual Studio Express 2012 untuk Web atau superior (baca Lampiran A untuk petunjuk tentang cara menginstalnya).
Siapkan
Menginstal Cuplikan Kode
Untuk kenyamanan, banyak kode yang akan Anda kelola di sepanjang lab ini tersedia sebagai cuplikan kode Visual Studio. Untuk menginstal cuplikan kode, jalankan file .\Source\Setup\CodeSnippets.vsi .
Jika Anda tidak terbiasa dengan Cuplikan Visual Studio Code, dan ingin mempelajari cara menggunakannya, Anda dapat merujuk ke lampiran dari dokumen ini "Lampiran C: Menggunakan Cuplikan Kode".
Latihan
Lab Langsung ini terdiri dari latihan berikut:
- Latihan 1: Menambahkan Database
- Latihan 2: Membuat Database menggunakan Kode Terlebih Dahulu
- Latihan 3: Mengkueri Database dengan Parameter
Catatan
Setiap latihan disertai dengan folder Akhir yang berisi solusi yang dihasilkan yang harus Anda peroleh setelah menyelesaikan latihan. Anda dapat menggunakan solusi ini sebagai panduan jika Anda memerlukan bantuan tambahan untuk mengerjakan latihan.
Perkiraan waktu untuk menyelesaikan lab ini: 35 menit.
Latihan 1: Menambahkan Database
Dalam latihan ini, Anda akan mempelajari cara menambahkan database dengan tabel aplikasi MusicStore ke solusi untuk menggunakan datanya. Setelah database dibuat dengan model, dan ditambahkan ke solusi, Anda akan memodifikasi kelas StoreController untuk menyediakan templat Tampilan dengan data yang diambil dari database, alih-alih menggunakan nilai yang dikodekan secara permanen.
Tugas 1 - Menambahkan Database
Dalam tugas ini, Anda akan menambahkan database yang sudah dibuat dengan tabel utama aplikasi MusicStore ke solusi.
Buka folder Mulai solusi yang terletak di Source/Ex1-AddingADatabaseDBFirst/Begin/ .
Anda harus mengunduh beberapa paket NuGet yang hilang sebelum melanjutkan. Untuk melakukan ini, klik menu Proyek dan pilih Kelola Paket NuGet.
Dalam dialog Kelola Paket NuGet, klik Pulihkan untuk mengunduh paket yang hilang.
Terakhir, bangun solusi dengan mengklik Build | Build Solution.
Catatan
Salah satu keuntungan menggunakan NuGet adalah Anda tidak perlu mengirim semua pustaka dalam proyek Anda, mengurangi ukuran proyek. Dengan NuGet Power Tools, dengan menentukan versi paket dalam file Packages.config, Anda akan dapat mengunduh semua pustaka yang diperlukan saat pertama kali menjalankan proyek. Inilah sebabnya mengapa Anda harus menjalankan langkah-langkah ini setelah Anda membuka solusi yang ada dari lab ini.
Tambahkan file database MvcMusicStore . Di Lab Langsung ini, Anda akan menggunakan database yang sudah dibuat yang disebut MvcMusicStore.mdf. Untuk melakukannya, klik kanan folder App_Data , arahkan ke Tambahkan lalu klik Item yang Sudah Ada. Telusuri ke \Source\Assets dan pilih file MvcMusicStore.mdf .

Menambahkan Item yang Sudah Ada

MvcMusicStore.mdf file database
Database telah ditambahkan ke proyek. Bahkan ketika database terletak di dalam solusi, Anda dapat mengkueri dan memperbaruinya saat dihosting di server database yang berbeda.

Database MvcMusicStore di Penjelajah Solusi
Verifikasi koneksi ke database. Untuk melakukan ini, klik dua kali MvcMusicStore.mdf untuk membuat koneksi.

Menyambungkan ke MvcMusicStore.mdf
Tugas 2 - Membuat Model Data
Dalam tugas ini, Anda akan membuat model data untuk berinteraksi dengan database yang ditambahkan di tugas sebelumnya.
Buat model data yang akan mewakili database. Untuk melakukan ini, di Penjelajah Solusi klik kanan folder Model, arahkan ke Tambahkan lalu klik Item Baru. Dalam dialog Tambahkan Item Baru, pilih templat Data lalu item ADO.NET Model Data Entitas. Ubah nama model data menjadi StoreDB.edmx dan klik Tambahkan.

Menambahkan Model Data Entitas ADO.NET StoreDB
Wizard Model Data Entitas akan muncul. Panduan ini akan memandu Anda melalui pembuatan lapisan model. Karena model harus dibuat berdasarkan database yang baru saja ditambahkan, pilih Hasilkan dari database dan klik Berikutnya.

Memilih konten model
Karena Anda membuat model dari database, Anda harus menentukan koneksi yang akan digunakan. Klik Koneksi Baru.
Pilih File Database Microsoft SQL Server dan klik Lanjutkan.

Pilih dialog sumber data
Klik Telusuri dan pilih database MvcMusicStore.mdf Anda berada di folder App_Data dan klik OK.

Properti koneksi
Kelas yang dihasilkan harus memiliki nama yang sama dengan entitas string koneksi, jadi ubah namanya menjadi MusicStoreEntities dan klik Berikutnya.

Memilih koneksi data
Pilih objek database yang akan digunakan. Karena Model Entitas hanya akan menggunakan tabel database, pilih opsi Tabel , dan pastikan bahwa opsi Sertakan kolom kunci asing dalam model dan Pluralisasi atau singularisasi nama objek yang dihasilkan juga dipilih. Ubah Namespace Layanan Model menjadi MvcMusicStore.Model dan klik Selesai.

Memilih objek database
Catatan
Jika dialog Peringatan Keamanan ditampilkan, klik OK untuk menjalankan templat dan menghasilkan kelas untuk entitas model.
Diagram entitas untuk database akan muncul, sementara kelas terpisah yang memetakan setiap tabel ke database akan dibuat. Misalnya, tabel Album akan diwakili oleh kelas Album , di mana setiap kolom dalam tabel akan memetakan ke properti kelas. Ini akan memungkinkan Anda untuk mengkueri dan bekerja dengan objek yang mewakili baris dalam database.

Diagram entitas
Catatan
Templat T4 (.tt) menjalankan kode untuk menghasilkan kelas entitas dan akan menimpa kelas yang ada dengan nama yang sama. Dalam contoh ini, kelas "Album", "Genre" dan "Artis" ditimpa dengan kode yang dihasilkan.
Tugas 3 - Membangun Aplikasi
Dalam tugas ini, Anda akan memeriksa bahwa, meskipun pembuatan model telah menghapus kelas model Album, Genre , dan Artis , proyek berhasil dibangun dengan menggunakan kelas model data baru.
Buat proyek dengan memilih item menu Build lalu Bangun MvcMusicStore.

Membangun proyek
Proyek berhasil dibangun. Mengapa masih berfungsi? Ini berfungsi karena tabel database memiliki bidang yang menyertakan properti yang Anda gunakan di kelas yang dihapus Album dan Genre.

Build berhasil
Sementara perancang menampilkan entitas dalam format diagram, mereka benar-benar kelas C#. Perluas node StoreDB.edmx di Penjelajah Solusi lalu StoreDB.tt, Anda akan melihat entitas baru yang dihasilkan.

File yang dihasilkan
Tugas 4 - Mengkueri Database
Dalam tugas ini, Anda akan memperbarui kelas StoreController sehingga, alih-alih menggunakan data yang dikodekan secara permanen, itu akan meminta database untuk mengambil informasi.
Buka Pengontrol\StoreController.cs dan tambahkan bidang berikut ke kelas untuk menyimpan instans kelas MusicStoreEntities , bernama storeDB:
(Cuplikan Kode - Model dan Akses Data - Ex1 storeDB)
public class StoreController : Controller { private MusicStoreEntities storeDB = new MusicStoreEntities();Kelas MusicStoreEntities mengekspos properti koleksi untuk setiap tabel dalam database. Perbarui metode tindakan Telusuri untuk mengambil Genre dengan semua Album.
(Cuplikan Kode - Model dan Akses Data - Penjelajahan Toko Ex1)
public ActionResult Browse(string genre) { // Retrieve Genre and its Associated Albums from database var genreModel = new Genre { Name = genre, Albums = this.storeDB.Albums.ToList() }; return this.View(genreModel); }Catatan
Anda menggunakan kemampuan .NET yang disebut LINQ (kueri terintegrasi bahasa) untuk menulis ekspresi kueri yang sangat diketik terhadap koleksi ini - yang akan menjalankan kode terhadap database dan mengembalikan objek yang dapat Anda programkan.
Untuk informasi lebih lanjut tentang LINQ, silakan kunjungi situs msdn.
Perbarui metode tindakan Indeks untuk mengambil semua genre.
(Cuplikan Kode - Model dan Akses Data - Indeks Penyimpanan Ex1)
public ActionResult Index() { var genres = this.storeDB.Genres; return this.View(genres); }Perbarui metode tindakan Indeks untuk mengambil semua genre dan mengubah koleksi menjadi daftar.
(Cuplikan Kode - Model dan Akses Data - Ex1 Store GenreMenu)
// GET: /Store/GenreMenu [ChildActionOnly] public ActionResult GenreMenu() { var genres = this.storeDB.Genres.Take(9).ToList(); return this.PartialView(genres); }
Tugas 5 - Menjalankan Aplikasi
Dalam tugas ini, Anda akan memeriksa bahwa halaman Indeks Penyimpanan sekarang akan menampilkan Genre yang disimpan dalam database alih-alih yang dikodekan secara permanen. Tidak perlu mengubah templat Tampilan karena StoreController mengembalikan entitas yang sama seperti sebelumnya, meskipun kali ini data akan berasal dari database.
Bangun kembali solusi dan tekan F5 untuk menjalankan Aplikasi.
Proyek dimulai di halaman Beranda. Verifikasi bahwa menu Genre bukan lagi daftar yang dikodekan secara permanen, dan data langsung diambil dari database.

Menelusuri Genre dari database
Sekarang telusuri ke genre apa pun dan verifikasi bahwa album diisi dari database.

Menelusuri Album dari database
Latihan 2: Membuat Database Menggunakan Kode Terlebih Dahulu
Dalam latihan ini, Anda akan mempelajari cara menggunakan pendekatan Code First untuk membuat database dengan tabel aplikasi MusicStore, dan cara mengakses datanya.
Setelah model dibuat, Anda akan memodifikasi StoreController untuk menyediakan templat Tampilan dengan data yang diambil dari database, alih-alih menggunakan nilai yang dikodekan secara permanen.
Catatan
Jika Anda telah menyelesaikan Latihan 1 dan telah bekerja dengan pendekatan Database First, Anda sekarang akan mempelajari cara mendapatkan hasil yang sama dengan proses yang berbeda. Tugas yang sama dengan Latihan 1 telah ditandai untuk mempermudah membaca Anda. Jika Anda belum menyelesaikan Latihan 1 tetapi ingin mempelajari pendekatan Code First, Anda dapat memulai dari latihan ini dan mendapatkan cakupan lengkap topik tersebut.
Tugas 1 - Mengisi Data Sampel
Dalam tugas ini, Anda akan mengisi database dengan data sampel saat awalnya dibuat menggunakan Code-First.
Buka folder Mulai solusi yang terletak di Source/Ex2-CreatingADatabaseCodeFirst/Begin/. Jika tidak, Anda mungkin terus menggunakan solusi Akhir yang diperoleh dengan menyelesaikan latihan sebelumnya.
Jika Anda membuka solusi Mulai yang disediakan, Anda harus mengunduh beberapa paket NuGet yang hilang sebelum melanjutkan. Untuk melakukan ini, klik menu Proyek dan pilih Kelola Paket NuGet.
Dalam dialog Kelola Paket NuGet, klik Pulihkan untuk mengunduh paket yang hilang.
Terakhir, bangun solusi dengan mengklik Build | Build Solution.
Catatan
Salah satu keuntungan menggunakan NuGet adalah Anda tidak perlu mengirim semua pustaka dalam proyek Anda, mengurangi ukuran proyek. Dengan NuGet Power Tools, dengan menentukan versi paket dalam file Packages.config, Anda akan dapat mengunduh semua pustaka yang diperlukan saat pertama kali menjalankan proyek. Inilah sebabnya mengapa Anda harus menjalankan langkah-langkah ini setelah Anda membuka solusi yang ada dari lab ini.
Tambahkan file SampleData.cs ke folder Model. Untuk melakukannya, klik kanan folder Model , arahkan ke Tambahkan lalu klik Item yang Sudah Ada. Telusuri ke \Source\Assets dan pilih file SampleData.cs .

Sampel data mengisi kode
Buka file Global.asax.cs dan tambahkan pernyataan penggunaan berikut.
(Cuplikan Kode - Model Dan Akses Data - Ex2 Global Asax Usings)
using MvcMusicStore.Models; using System.Data.Entity;Dalam metode Application_Start() tambahkan baris berikut untuk mengatur inisialisasi database.
(Cuplikan Kode - Model dan Akses Data - Ex2 Global Asax SetInitializer)
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); Database.SetInitializer(new SampleData()); }
Tugas 2 - Mengonfigurasi koneksi ke Database
Sekarang setelah Anda menambahkan database ke proyek kami, Anda akan menulis di file Web.config string koneksi.
Tambahkan string koneksi di Web.config. Untuk melakukannya, buka Web.config di akar proyek dan ganti string koneksi bernama DefaultConnection dengan baris ini di bagian <connectionStrings>:

Lokasi file Web.config
<configuration> ... <connectionStrings> <add name="MusicStoreEntities" connectionString="data source=(LocalDb)\v11.0;initial catalog=MvcMusicStore;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\MvcMusicStore.mdf" providerName="System.Data.SqlClient" /> </connectionStrings> ...
Tugas 3 - Bekerja dengan Model
Sekarang setelah Anda mengonfigurasi koneksi ke database, Anda akan menautkan model dengan tabel database. Dalam tugas ini, Anda akan membuat kelas yang akan ditautkan ke database dengan Kode Pertama. Ingatlah bahwa ada kelas model POCO yang harus dimodifikasi.
Catatan
Jika Anda menyelesaikan Latihan 1, Anda akan mencatat bahwa langkah ini dilakukan oleh wizard. Dengan melakukan Code First, Anda akan membuat kelas secara manual yang akan ditautkan ke entitas data.
Buka kelas model POCO Genre dari folder proyek Model dan sertakan ID. Gunakan properti int dengan nama GenreId.
(Cuplikan Kode - Model Dan Akses Data - Genre Pertama Kode Ex2)
namespace MvcMusicStore.Models { using System.Collections.Generic; public class Genre { public int GenreId { get; set; } public string Name { get; set; } public string Description { get; set; } public List<Album> Albums { get; set; } } }Catatan
Untuk bekerja dengan konvensi Code First, Genre kelas harus memiliki properti kunci utama yang akan terdeteksi secara otomatis.
Anda dapat membaca selengkapnya tentang Konvensi Pertama Kode di artikel msdn ini.
Sekarang, buka kelas model POCO Album dari folder proyek Model dan sertakan kunci asing, buat properti dengan nama GenreId dan ArtistId. Kelas ini sudah memiliki GenreId untuk kunci utama.
(Cuplikan Kode - Model dan Akses Data - Album Pertama Kode Ex2)
namespace MvcMusicStore.Models { public class Album { public int AlbumId { get; set; } public int GenreId { get; set; } public int ArtistId { get; set; } public string Title { get; set; } public decimal Price { get; set; } public string AlbumArtUrl { get; set; } public virtual Genre Genre { get; set; } public virtual Artist Artist { get; set; } } }Buka kelas model POCO Artis dan sertakan properti ArtistId .
(Cuplikan Kode - Model dan Akses Data - Ex2 Code First Artist)
namespace MvcMusicStore.Models { public class Artist { public int ArtistId { get; set; } public string Name { get; set; } } }Klik kanan folder proyek Model dan pilih Tambahkan | Kelas. Beri nama file MusicStoreEntities.cs. Kemudian, klik Tambahkan.

Menambahkan item baru

Menambahkan kelas
Buka kelas yang baru saja Anda buat, MusicStoreEntities.cs, dan sertakan namespace System.Data.Entity dan System.Data.Entity.Infrastructure.
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data.Entity; using System.Data.Entity.Infrastructure; ...Ganti deklarasi kelas untuk memperluas kelas DbContext: deklarasikan DBSet publik dan ambil alih metode OnModelCreating. Setelah langkah ini, Anda akan mendapatkan kelas domain yang akan menautkan model Anda dengan Kerangka Kerja Entitas. Untuk melakukannya, ganti kode kelas dengan yang berikut:
(Cuplikan Kode - Model Dan Akses Data - Ex2 Code First MusicStoreEntities)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data.Entity; using System.Data.Entity.Infrastructure; namespace MvcMusicStore.Models { public class MusicStoreEntities : DbContext { public DbSet<Genre> Genres { get; set; } public DbSet<Album> Albums { get; set; } public DbSet<Artist> Artists { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Genre>().ToTable("Genres"); modelBuilder.Entity<Album>().ToTable("Albums"); modelBuilder.Entity<Artist>().ToTable("Artists"); base.OnModelCreating(modelBuilder); } } }
Catatan
Dengan Entity Framework DbContext dan DBSet , Anda akan dapat mengkueri Genre kelas POCO. Dengan memperluas metode OnModelCreating , Anda menentukan dalam kode bagaimana Genre akan dipetakan ke tabel database. Anda dapat menemukan informasi selengkapnya tentang DBContext dan DBSet dalam artikel msdn ini: tautan
Tugas 4 - Mengkueri Database
Dalam tugas ini, Anda akan memperbarui kelas StoreController sehingga, alih-alih menggunakan data yang dikodekan secara permanen, itu akan mengambilnya dari database.
Catatan
Tugas ini sama dengan Latihan 1.
Jika Anda menyelesaikan Latihan 1, Anda akan mencatat langkah-langkah ini sama dalam kedua pendekatan (Database terlebih dahulu atau Kode terlebih dahulu). Mereka berbeda dalam cara data ditautkan dengan model, tetapi akses ke entitas data belum transparan dari pengontrol.
Buka Pengontrol\StoreController.cs dan tambahkan bidang berikut ke kelas untuk menyimpan instans kelas MusicStoreEntities , bernama storeDB:
(Cuplikan Kode - Model dan Akses Data - Ex1 storeDB)
public class StoreController : Controller { private MusicStoreEntities storeDB = new MusicStoreEntities(); ... }Kelas MusicStoreEntities mengekspos properti koleksi untuk setiap tabel dalam database. Perbarui metode tindakan Telusuri untuk mengambil Genre dengan semua Album.
(Cuplikan Kode - Model dan Akses Data - Penjelajahan Toko Ex2)
public ActionResult Browse(string genre) { // Retrieve Genre and its Associated Albums from database var genreModel = new Genre { Name = genre, Albums = this.storeDB.Albums.ToList() }; return this.View(genreModel); }Catatan
Anda menggunakan kemampuan .NET yang disebut LINQ (kueri terintegrasi bahasa) untuk menulis ekspresi kueri yang sangat diketik terhadap koleksi ini - yang akan menjalankan kode terhadap database dan mengembalikan objek yang dapat Anda programkan.
Untuk informasi lebih lanjut tentang LINQ, silakan kunjungi situs msdn.
Perbarui metode tindakan Indeks untuk mengambil semua genre.
(Cuplikan Kode - Model dan Akses Data - Indeks Penyimpanan Ex2)
public ActionResult Index() { var genres = this.storeDB.Genres; return this.View(genres); }Perbarui metode tindakan Indeks untuk mengambil semua genre dan mengubah koleksi menjadi daftar.
(Cuplikan Kode - Model dan Akses Data - Ex2 Store GenreMenu)
// GET: /Store/GenreMenu [ChildActionOnly] public ActionResult GenreMenu() { var genres = this.storeDB.Genres.Take(9).ToList(); return this.PartialView(genres); }
Tugas 5 - Menjalankan Aplikasi
Dalam tugas ini, Anda akan memeriksa bahwa halaman Indeks Penyimpanan sekarang akan menampilkan Genre yang disimpan dalam database alih-alih yang dikodekan secara permanen. Tidak perlu mengubah templat Tampilan karena StoreController mengembalikan StoreIndexViewModel yang sama seperti sebelumnya, tetapi kali ini data akan berasal dari database.
Bangun kembali solusi dan tekan F5 untuk menjalankan Aplikasi.
Proyek dimulai di halaman Beranda. Verifikasi bahwa menu Genre bukan lagi daftar yang dikodekan secara permanen, dan data langsung diambil dari database.

Menelusuri Genre dari database
Sekarang telusuri ke genre apa pun dan verifikasi bahwa album diisi dari database.

Menelusuri Album dari database
Latihan 3: Mengkueri Database dengan Parameter
Dalam latihan ini, Anda akan mempelajari cara mengkueri database menggunakan parameter, dan cara menggunakan Pembentukan Hasil Kueri, fitur yang mengurangi akses database angka yang mengambil data dengan cara yang lebih efisien.
Catatan
Untuk informasi lebih lanjut tentang Pembentukan Hasil Kueri, kunjungi artikel msdn berikut ini.
Tugas 1 - Memodifikasi StoreController untuk Mengambil Album dari Database
Dalam tugas ini, Anda akan mengubah kelas StoreController untuk mengakses database untuk mengambil album dari genre tertentu.
Buka folder Mulai solusi yang terletak di folder Source\Ex3-QueryingTheDatabaseWithParametersCodeFirst\Begin jika Anda ingin menggunakan pendekatan Code-First atau folder Source\Ex3-QueryingTheDatabaseWithParametersDBFirst\Begin jika Anda ingin menggunakan pendekatan Database-First. Jika tidak, Anda mungkin terus menggunakan solusi Akhir yang diperoleh dengan menyelesaikan latihan sebelumnya.
Jika Anda membuka solusi Mulai yang disediakan, Anda harus mengunduh beberapa paket NuGet yang hilang sebelum melanjutkan. Untuk melakukan ini, klik menu Proyek dan pilih Kelola Paket NuGet.
Dalam dialog Kelola Paket NuGet, klik Pulihkan untuk mengunduh paket yang hilang.
Terakhir, bangun solusi dengan mengklik Build | Build Solution.
Catatan
Salah satu keuntungan menggunakan NuGet adalah Anda tidak perlu mengirim semua pustaka dalam proyek Anda, mengurangi ukuran proyek. Dengan NuGet Power Tools, dengan menentukan versi paket dalam file Packages.config, Anda akan dapat mengunduh semua pustaka yang diperlukan saat pertama kali menjalankan proyek. Inilah sebabnya mengapa Anda harus menjalankan langkah-langkah ini setelah Anda membuka solusi yang ada dari lab ini.
Buka kelas StoreController untuk mengubah metode tindakan Telusuri. Untuk melakukan ini, di Penjelajah Solusi, perluas folder Pengontrol dan klik dua kali StoreController.cs.
Ubah metode tindakan Telusuri untuk mengambil album untuk genre tertentu. Untuk melakukan ini, ganti kode berikut:
(Cuplikan Kode - Model dan Akses Data - Ex3 StoreController BrowseMethod)
public ActionResult Browse(string genre) { // Retrieve Genre and its Associated Albums from database var genreModel = this.storeDB.Genres.Include("Albums") .Single(g => g.Name == genre); return this.View(genreModel); }
Catatan
Untuk mengisi koleksi entitas, Anda perlu menggunakan metode Sertakan untuk menentukan Anda ingin mengambil album juga. Anda dapat menggunakan .Ekstensi single() di LINQ karena dalam hal ini hanya satu genre yang diharapkan untuk sebuah album. Metode Single() mengambil ekspresi Lambda sebagai parameter, yang dalam hal ini menentukan satu objek Genre sehingga namanya cocok dengan nilai yang ditentukan.
Anda akan memanfaatkan fitur yang memungkinkan Anda menunjukkan entitas terkait lain yang ingin Anda muat juga ketika objek Genre diambil. Fitur ini disebut Pembentukan Hasil Kueri, dan memungkinkan Anda mengurangi berapa kali diperlukan untuk mengakses database untuk mengambil informasi. Dalam skenario ini, Anda akan ingin mengambil Album untuk Genre yang Anda ambil sebelumnya.
Kueri menyertakan Genres.Include("Albums") untuk menunjukkan bahwa Anda juga menginginkan album terkait. Ini akan menghasilkan aplikasi yang lebih efisien, karena akan mengambil data Genre dan Album dalam satu permintaan database.
Tugas 2 - Menjalankan Aplikasi
Dalam tugas ini, Anda akan menjalankan aplikasi dan mengambil album genre tertentu dari database.
Tekan F5 untuk menjalankan Aplikasi.
Proyek dimulai di halaman Beranda. Ubah URL ke /Store/Browse?genre=Pop untuk memverifikasi bahwa hasilnya sedang diambil dari database.

Menelusuri /Store/Browse?genre=Pop
Tugas 3 - Mengakses Album menurut Id
Dalam tugas ini, Anda akan mengulangi prosedur sebelumnya untuk mendapatkan album dengan Id mereka.
Tutup browser jika diperlukan, untuk kembali ke Visual Studio. Buka kelas StoreController untuk mengubah metode tindakan Detail. Untuk melakukan ini, di Penjelajah Solusi, perluas folder Pengontrol dan klik dua kali StoreController.cs.
Ubah metode tindakan Detail untuk mengambil detail album berdasarkan Id mereka. Untuk melakukan ini, ganti kode berikut:
(Cuplikan Kode - Model dan Akses Data - Ex3 StoreController DetailsMethod)
// GET: /Store/ public ActionResult Details(int id) { var album = this.storeDB.Albums.Find(id); if (album == null) { return this.HttpNotFound(); } return this.View(album); }
Tugas 4 - Menjalankan Aplikasi
Dalam tugas ini, Anda akan menjalankan Aplikasi di browser web dan mendapatkan detail album dengan Id mereka.
Tekan F5 untuk menjalankan Aplikasi.
Proyek dimulai di halaman Beranda. Ubah URL menjadi /Store/Details/51 atau telusuri genre dan pilih album untuk memverifikasi bahwa hasilnya diambil dari database.

Menelusuri /Store/Details/51
Catatan
Selain itu, Anda dapat menyebarkan aplikasi ini ke Windows Azure Web Sites setelah Lampiran B: Menerbitkan aplikasi MVC 4 ASP.NET menggunakan Web Deploy.
Ringkasan
Dengan menyelesaikan Lab Langsung ini, Anda telah mempelajari dasar-dasar ASP.NET Model MVC dan Akses Data, menggunakan pendekatan Database First serta Pendekatan Pertama Kode:
- Cara menambahkan database ke solusi untuk menggunakan datanya
- Cara memperbarui Pengontrol untuk menyediakan Templat tampilan dengan data yang diambil dari database alih-alih yang dikodekan secara permanen
- Cara mengkueri database menggunakan parameter
- Cara menggunakan Pembentukan Hasil Kueri, fitur yang mengurangi jumlah akses database, mengambil data dengan cara yang lebih efisien
- Cara menggunakan pendekatan Database First dan Code First di Microsoft Entity Framework untuk menautkan database dengan model
Lampiran A: Menginstal Visual Studio Express 2012 untuk Web
Anda dapat menginstal Microsoft Visual Studio Express 2012 untuk Web atau versi "Ekspres" lainnya menggunakan Microsoft Web Platform Installer. Instruksi berikut memandu Anda melalui langkah-langkah yang diperlukan untuk menginstal Visual studio Express 2012 untuk Web menggunakan Microsoft Web Platform Installer.
Buka [/iis/extensions/introduction-to-iis-express/iis-express-overview?linkid=9810169](/iis/extensions/introduction-to-iis-express/iis-express-overview?linkid=9810169). Atau, jika Anda sudah menginstal Penginstal Platform Web, Anda dapat membukanya dan mencari produk "Visual Studio Express 2012 untuk Web dengan Windows Azure SDK".
Klik Instal Sekarang. Jika Anda tidak memiliki Penginstal Platform Web, Anda akan diarahkan untuk mengunduh dan menginstalnya terlebih dahulu.
Setelah Penginstal Platform Web terbuka, klik Instal untuk memulai penyiapan.

Menginstal Visual Studio Express
Baca semua lisensi dan ketentuan produk dan klik Saya Terima untuk melanjutkan.

Menerima persyaratan lisensi
Tunggu hingga proses pengunduhan dan penginstalan selesai.

Kemajuan penginstalan
Setelah penginstalan selesai, klik Selesai.

Penginstalan selesai
Klik Keluar untuk menutup Penginstal Platform Web.
Untuk membuka Visual Studio Express for Web, buka layar Mulai dan mulai menulis "VS Express", lalu klik petak VS Express untuk Web .

Vs Express untuk petak web
Lampiran B: Menerbitkan Aplikasi MVC 4 ASP.NET menggunakan Web Deploy
Lampiran ini akan menunjukkan kepada Anda cara membuat situs web baru dari Portal Manajemen Windows Azure dan menerbitkan aplikasi yang Anda peroleh dengan mengikuti lab, memanfaatkan fitur penerbitan Web Deploy yang disediakan oleh Windows Azure.
Tugas 1 - Membuat Situs Web Baru dari Portal Windows Azure
Buka Portal Manajemen Windows Azure dan masuk menggunakan kredensial Microsoft yang terkait dengan langganan Anda.
Catatan
Dengan Windows Azure, Anda dapat menghosting 10 ASP.NET Situs Web secara gratis lalu menskalakan seiring pertumbuhan lalu lintas Anda. Anda dapat mendaftar di sini.

Masuk ke Portal Manajemen Windows Azure
Klik Baru pada bilah perintah.

Membuat Situs Web baru
Klik Situs Web Komputasi. | Lalu pilih opsi Buat Cepat. Sediakan URL yang tersedia untuk situs web baru dan klik Buat Situs Web.
Catatan
Situs Web Windows Azure adalah host untuk aplikasi web yang berjalan di cloud yang dapat Anda kontrol dan kelola. Opsi Buat Cepat memungkinkan Anda menyebarkan aplikasi web yang telah selesai ke Situs Web Windows Azure dari luar portal. Ini tidak termasuk langkah-langkah untuk menyiapkan database.

Membuat Situs Web baru menggunakan Buat Cepat
Tunggu hingga Situs Web baru dibuat.
Setelah Situs Web dibuat, klik tautan di bawah kolom URL . Periksa apakah Situs Web baru berfungsi.

Menelusuri ke situs web baru

Situs web berjalan
Kembali ke portal dan klik nama situs web di bawah kolom Nama untuk menampilkan halaman manajemen.

Membuka halaman manajemen Situs Web
Di halaman Dasbor , di bawah bagian sekilas , klik tautan Unduh profil terbitkan.
Catatan
Profil penerbitan berisi semua informasi yang diperlukan untuk menerbitkan aplikasi web ke situs web Windows Azure untuk setiap metode publikasi yang diaktifkan. Profil penerbitan berisi URL, kredensial pengguna, dan string database yang diperlukan untuk menyambungkan dan mengautentikasi terhadap setiap titik akhir tempat metode publikasi diaktifkan. Microsoft WebMatrix 2, Microsoft Visual Studio Express untuk Web dan Dukungan Microsoft Visual Studio 2012 membaca profil penerbitan untuk mengotomatiskan konfigurasi program ini untuk menerbitkan aplikasi web ke situs web Windows Azure.

Mengunduh profil penerbitan Situs Web
Unduh file profil publikasi ke lokasi yang diketahui. Selanjutnya dalam latihan ini Anda akan melihat cara menggunakan file ini untuk menerbitkan aplikasi web ke Windows Azure Web Sites dari Visual Studio.

Menyimpan file profil publikasi
Tugas 2 - Mengonfigurasi Server Database
Jika aplikasi Anda menggunakan database SQL Server, Anda harus membuat server SQL Database. Jika Anda ingin menyebarkan aplikasi sederhana yang tidak menggunakan SQL Server, Anda mungkin melewati tugas ini.
Anda akan memerlukan server SQL Database untuk menyimpan database aplikasi. Anda dapat melihat server SQL Database dari langganan Anda di portal Manajemen Windows Azure di Dasbor | | Server Server Sql Database. Jika Anda tidak memiliki server yang dibuat, Anda dapat membuatnya menggunakan tombol Tambahkan pada bilah perintah. Perhatikan nama server dan URL, nama masuk administrator dan kata sandi, karena Anda akan menggunakannya dalam tugas berikutnya. Jangan membuat database, karena akan dibuat di tahap selanjutnya.

Dasbor SQL Database Server
Dalam tugas berikutnya Anda akan menguji koneksi database dari Visual Studio, karena alasan itu Anda perlu menyertakan alamat IP lokal Anda dalam daftar Alamat IP yang Diizinkan di server. Untuk melakukannya, klik Konfigurasikan, pilih alamat IP dari Alamat IP Klien Saat Ini dan tempelkan pada kotak teks Alamat IP Mulai dan Alamat IP Akhir dan klik tombol
.
Menambahkan Alamat IP Klien
Setelah Alamat IP Klien ditambahkan ke daftar alamat IP yang diizinkan, klik Simpan untuk mengonfirmasi perubahan.

Konfirmasi Perubahan
Tugas 3 - Menerbitkan Aplikasi MVC 4 ASP.NET menggunakan Web Deploy
Kembali ke solusi MVC 4 ASP.NET. Di Penjelajah Solusi, klik kanan proyek situs web dan pilih Terbitkan.

Menerbitkan situs web
Impor profil penerbitan yang Anda simpan di tugas pertama.

Mengimpor profil penerbitan
Klik Validasi Koneksi. Setelah Validasi selesai, klik Berikutnya.
Catatan
Validasi selesai setelah Anda melihat tanda centang hijau muncul di samping tombol Validasi Koneksi.

Memvalidasi koneksi
Di halaman Pengaturan , di bawah bagian Database , klik tombol di samping kotak teks koneksi database Anda (yaitu DefaultConnection).

Konfigurasi penyebaran web
Konfigurasikan koneksi database sebagai berikut:
Di nama Server ketik URL server SQL Database Anda menggunakan awalan tcp: .
Di Nama pengguna ketik nama masuk administrator server Anda.
Di Kata Sandi ketik kata sandi masuk administrator server Anda.
Ketik nama database baru.

Mengonfigurasi string koneksi tujuan
Lalu klik OK. Ketika diminta untuk membuat database, klik Ya.

Membuat database
string koneksi yang akan Anda gunakan untuk menyambungkan ke SQL Database di Windows Azure ditampilkan dalam kotak teks Koneksi Default. Lalu, klik Berikutnya.

String koneksi menunjuk ke SQL Database
Di halaman Pratinjau , klik Terbitkan.

Menerbitkan aplikasi web
Setelah proses penerbitan selesai, browser default Anda akan membuka situs web yang diterbitkan.
Lampiran C: Menggunakan Cuplikan Kode
Dengan cuplikan kode, Anda memiliki semua kode yang Anda butuhkan di ujung jari Anda. Dokumen lab akan memberi tahu Anda kapan tepatnya Anda dapat menggunakannya, seperti yang ditunjukkan pada gambar berikut.

Menggunakan cuplikan kode Visual Studio untuk menyisipkan kode ke dalam proyek Anda
Untuk menambahkan cuplikan kode menggunakan keyboard (hanya C#)
- Tempatkan kursor tempat Anda ingin menyisipkan kode.
- Mulai ketik nama cuplikan (tanpa spasi atau tanda hubung).
- Tonton saat IntelliSense menampilkan nama cuplikan yang cocok.
- Pilih cuplikan yang benar (atau terus ketik hingga seluruh nama cuplikan dipilih).
- Tekan tombol Tab dua kali untuk menyisipkan cuplikan di lokasi kursor.

Mulai ketik nama cuplikan

Tekan Tab untuk memilih cuplikan yang disorot

Tekan Tab lagi dan cuplikan akan diperluas
Untuk menambahkan cuplikan kode menggunakan mouse (C#, Visual Basic dan XML) 1. Klik kanan tempat Anda ingin menyisipkan cuplikan kode.
- Pilih Sisipkan Cuplikan diikuti dengan Cuplikan Kode Saya.
- Pilih cuplikan yang relevan dari daftar, dengan mengkliknya.

Klik kanan tempat Anda ingin menyisipkan cuplikan kode dan pilih Sisipkan Cuplikan

Pilih cuplikan yang relevan dari daftar, dengan mengkliknya