Panduan: Model dan Kueri Objek Sederhana (Visual Basic)
Panduan ini menyediakan LINQ end-to-end yang mendasar untuk skenario SQL dengan kompleksitas minimal. Anda akan membuat kelas entitas yang memodelkan tabel Pelanggan dalam sampel database Northwind. Kemudian, Anda akan membuat kueri sederhana untuk mencantumkan pelanggan yang berlokasi di London.
Panduan ini berorientasi pada kode berdasarkan desain untuk membantu menunjukkan LINQ ke konsep SQL. Biasanya, Anda akan menggunakan Object Relational Designer untuk membuat model objek Anda.
Catatan
Komputer Anda mungkin memperlihatkan nama atau lokasi yang berbeda untuk beberapa elemen antarmuka pengguna Visual Studio dalam petunjuk berikut. Edisi Visual Studio yang Anda miliki dan setelan yang Anda gunakan menentukan elemen-elemen ini. Untuk informasi selengkapnya, lihat Mempersonalisasi IDE.
Panduan ini ditulis menggunakan Pengaturan Pengembangan Visual Basic.
Prasyarat
Panduan ini menggunakan folder khusus ("c:\linqtest") untuk menyimpan file. Buat folder ini sebelum Anda memulai panduan.
Panduan ini memerlukan database sampel Northwind. Jika Anda tidak memiliki database ini di komputer pengembangan Anda, Anda dapat mengunduhnya dari situs pengunduhan Microsoft. Untuk mengetahui petunjuknya, lihat Mengunduh Database Sampel. Setelah Anda mengunduh database, salin file ke folder c:\linqtest.
Gambaran Umum
Panduan ini terdiri atas enam tugas utama:
Membuat solusi LINQ to SQL di Visual Studio.
Memetakan kelas ke tabel database.
Menunjuk properti pada kelas untuk mewakili kolom database.
Menentukan koneksi ke database Northwind.
Membuat kueri sederhana untuk dijalankan terhadap database.
Menjalankan kueri dan mengamati hasilnya.
Membuat Solusi LINQ to SQL
Dalam tugas pertama ini, Anda membuat solusi Visual Studio yang berisi referensi yang diperlukan untuk membuat dan menjalankan proyek LINQ to SQL.
Untuk membuat solusi LINQ to SQL
Pada menu File, klik Proyek Baru.
Di panel Jenis proyek dari kotak dialog Proyek Baru, klik Visual Basic.
Di panel Template, klik Aplikasi Konsol.
Di kotak Nama, ketik LinqConsoleApp.
Klik OK.
Menambahkan Referensi dan Arahan LINQ
Panduan ini menggunakan rakitan yang mungkin tidak diinstal secara default di proyek Anda. Jika System.Data.Linq
tidak terdaftar sebagai referensi dalam proyek Anda (klik Tampilkan Semua File di Penjelajah Solusi dan luaskan node Referensi), lalu tambahkan, seperti yang dijelaskan dalam langkah-langkah berikut.
Untuk menambahkan System.Data.Linq
Di Penjelajah Solusi, klik kanan Referensi, lalu pilih Tambahkan Referensi.
Dalam kotak dialog Tambahkan Referensi, klik .NET, klik rakitan System.Data.Linq, lalu klik OK.
Rakitan ditambahkan ke proyek.
Juga dalam kotak dialog Tambahkan Referensi, klik .NET, gulir ke dan klik Sistem. Windows. Formulir, lalu klik OK.
Rakitan ini, yang mendukung kotak pesan di panduan, ditambahkan ke proyek.
Tambahkan arahan berikut di atas
Module1
:Imports System.Data.Linq Imports System.Data.Linq.Mapping Imports System.Windows.Forms
Memetakan Kelas ke Tabel Database
Dalam langkah ini, Anda membuat kelas dan memetakannya ke tabel database. Kelas semacam itu disebut kelas entitas. Perhatikan bahwa pemetaan hanya dilakukan dengan menambahkan atribut TableAttribute. Properti Name menentukan nama tabel dalam database.
Untuk membuat kelas entitas dan memetakannya ke tabel database
Ketik atau tempelkan kode berikut ke Module1.vb tepat di atas
Sub Main
:<Table(Name:="Customers")> _ Public Class Customer End Class
Menunjuk Properti pada Kelas untuk Mewakili Kolom Database
Dalam langkah ini, Anda menyelesaikan beberapa tugas.
Anda menggunakan atribut ColumnAttribute untuk menunjuk properti
CustomerID
danCity
pada kelas entitas sebagai mewakili kolom dalam tabel database.Anda menunjuk properti
CustomerID
sebagai mewakili kolom kunci primer dalam database.Anda menunjuk kolom
_CustomerID
dan_City
untuk penyimpanan privat. Kemudian, LINQ to SQL dapat menyimpan dan mengambil nilai secara langsung, daripada menggunakan aksesor publik yang dapat menyertakan logika bisnis.
Untuk mewakili karakteristik dua kolom database
Ketik atau tempel kode berikut ke Module1.vb tepat sebelum
End Class
:Private _CustomerID As String <Column(IsPrimaryKey:=True, Storage:="_CustomerID")> _ Public Property CustomerID() As String Get Return Me._CustomerID End Get Set(ByVal value As String) Me._CustomerID = value End Set End Property Private _City As String <Column(Storage:="_City")> _ Public Property City() As String Get Return Me._City End Get Set(ByVal value As String) Me._City = value End Set End Property
Menentukan Koneksi ke Database Northwind
Dalam langkah ini, Anda menggunakan objek DataContext untuk membuat koneksi antara struktur data berbasis kode dan database itu sendiri. DataContext adalah saluran utama tempat Anda mengambil objek dari database dan mengirimkan perubahan.
Anda juga mendeklarasikan Table(Of Customer)
untuk bertindak sebagai tabel logis yang diketik untuk kueri Anda terhadap tabel Pelanggan dalam database. Anda akan membuat dan menjalankan kueri ini di langkah-langkah selanjutnya.
Untuk menentukan koneksi database
Ketik atau tempel kode berikut ke dalam metode
Sub Main
.Perhatikan bahwa file
northwnd.mdf
diasumsikan berada di folder linqtest. Untuk mendapatkan informasi selengkapnya, lihat bagian Prasyarat sebelumnya dalam panduan ini.' Use a connection string. Dim db As New DataContext _ ("c:\linqtest\northwnd.mdf") ' Get a typed table to run queries. Dim Customers As Table(Of Customer) = _ db.GetTable(Of Customer)()
Membuat Kueri Sederhana
Dalam langkah ini, Anda membuat kueri untuk menemukan pelanggan mana dalam tabel Pelanggan database yang berada di London. Kode kueri dalam langkah ini hanya menjelaskan kueri. Kode ini tidak menjalankannya. Pendekatan ini dikenal sebagai eksekusi yang ditangguhkan. Untuk informasi selengkapnya, lihat Pengantar Kueri LINQ (C#).
Anda juga akan menghasilkan output log untuk menampilkan perintah SQL yang dihasilkan LINQ to SQL. Fitur pengelogan ini (yang menggunakan Log) sangat membantu dalam penelusuran kesalahan, dan dalam menentukan bahwa perintah yang dikirimkan ke database secara akurat mewakili kueri Anda.
Untuk membuat kueri sederhana
Ketik atau tempel kode berikut ke dalam metode
Sub Main
setelah deklarasiTable(Of Customer)
:' Attach the log to show generated SQL in a console window. db.Log = Console.Out ' Query for customers in London. Dim custQuery = _ From cust In Customers _ Where cust.City = "London" _ Select cust
Menjalankan Kueri
Dalam langkah ini, Anda benar-benar menjalankan kueri. Ekspresi kueri yang Anda buat di langkah-langkah sebelumnya tidak dievaluasi hingga hasilnya diperlukan. Ketika Anda memulai perulangan For Each
, perintah SQL dijalankan terhadap database dan objek terwujud.
Untuk menjalankan kueri
Ketik atau tempel kode berikut di akhir metode
Sub Main
(setelah deskripsi kueri):' Format the message box. Dim msg As String = "", title As String = "London customers:", _ response As MsgBoxResult, style As MsgBoxStyle = _ MsgBoxStyle.Information ' Execute the query. For Each custObj In custQuery msg &= String.Format(custObj.CustomerID & vbCrLf) Next ' Display the results. response = MsgBox(msg, style, title)
Tekan F5 untuk men-debug dan menjalankan aplikasi.
Catatan
Jika aplikasi Anda menghasilkan kesalahan run-time, lihat bagian Pemecahan Masalah Pembelajaran melalui Panduan.
Kotak pesan menampilkan daftar enam pelanggan. Jendela Konsol menampilkan kode SQL yang dihasilkan.
Klik OK untuk menutup kotak pesan.
Aplikasi ditutup.
Pada menu Berkas, klik Simpan Semua.
Anda akan membutuhkan aplikasi ini jika Anda melanjutkan panduan berikutnya.
Langkah berikutnya
Panduan: Mengkueri Seluruh Hubungan (Visual Basic) berlanjut tempat panduan ini berakhir. Panduan Kueri Di Seluruh Hubungan menunjukkan cara LINQ to SQL dapat melakukan kueri di seluruh tabel, serupa dengan gabung dalam database hubungan.
Jika Anda ingin melakukan panduan Kueri Di Seluruh Hubungan, pastikan menyimpan solusi untuk panduan yang baru saja Anda selesaikan, yang merupakan prasyarat.