Bagikan melalui


Panduan: Model dan Kueri Objek Sederhana (C#)

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 dengan menggunakan Pengaturan Pengembangan Visual C#.

Prasyarat

  • Panduan ini menggunakan folder khusus ("c:\linqtest5") 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:\linqtest5.

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

  1. Di Visual Studio, pada menu File, arahkan ke Baru, lalu klik Proyek.

  2. Di panel Jenis project kotak dialog Project Baru, klik Visual C#.

  3. Di panel Template, klik Aplikasi Konsol.

  4. Di kotak Nama, ketik LinqConsoleApp.

  5. Di kotak Lokasi, verifikasi tempat Anda ingin menyimpan file proyek Anda.

  6. 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 tercantum sebagai referensi dalam proyek Anda (perluas simpul Referensi di Penjelajah Solusi), tambahkan, seperti dijelaskan dalam langkah-langkah berikut.

Untuk menambahkan System.Data.Linq

  1. Di Penjelajah Solusi, klik kanan Referensi, lalu pilih Tambahkan Referensi.

  2. Dalam kotak dialog Tambahkan Referensi, klik .NET, klik rakitan System.Data.Linq, lalu klik OK.

    Rakitan ditambahkan ke proyek.

  3. Tambahkan arahan berikut di bagian atas Program.cs:

    using System.Data.Linq;
    using System.Data.Linq.Mapping;
    

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 tempel kode berikut ke Program.cs tepat di atas deklarasi kelas Program:

    [Table(Name = "Customers")]
    public class Customer
    {
    }
    

Menunjuk Properti pada Kelas untuk Mewakili Kolom Database

Dalam langkah ini, Anda menyelesaikan beberapa tugas.

  • Anda menggunakan atribut ColumnAttribute untuk menunjuk properti CustomerID dan City 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 Program.cs di dalam kurung kurawal untuk kelas Customer.

    private string _CustomerID;
    [Column(IsPrimaryKey=true, Storage="_CustomerID")]
    public string CustomerID
    {
        get
        {
            return this._CustomerID;
        }
        set
        {
            this._CustomerID = value;
        }
    }
    
    private string _City;
    [Column(Storage="_City")]
    public string City
    {
        get
        {
            return this._City;
        }
        set
        {
            this._City=value;
        }
    }
    

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<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 Main.

    Perhatikan bahwa file northwnd.mdf diasumsikan berada di folder linqtest5. Untuk mendapatkan informasi selengkapnya, lihat bagian Prasyarat sebelumnya dalam panduan ini.

    // Use a connection string.
    DataContext db = new DataContext
        (@"c:\linqtest5\northwnd.mdf");
    
    // Get a typed table to run queries.
    Table<Customer> Customers = db.GetTable<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 Main setelah deklarasi Table<Customer>.

    // Attach the log to show generated SQL.
    db.Log = Console.Out;
    
    // Query for customers in London.
    IQueryable<Customer> 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 foreach, perintah SQL dijalankan terhadap database dan objek terwujud.

Untuk menjalankan kueri

  1. Ketik atau tempel kode berikut di akhir metode Main (setelah deskripsi kueri).

    foreach (Customer cust in custQuery)
    {
        Console.WriteLine("ID={0}, City={1}", cust.CustomerID,
            cust.City);
    }
    
    // Prevent console window from closing.
    Console.ReadLine();
    
  2. Tekan F5 untuk men-debug dan menjalankan aplikasi.

    Catatan

    Jika aplikasi Anda menghasilkan kesalahan run-time, lihat bagian Pemecahan Masalah Pembelajaran melalui Panduan.

    Hasil kueri di jendela konsol akan muncul sebagai berikut:

    ID=AROUT, City=London

    ID=BSBEV, City=London

    ID=CONSH, City=London

    ID=EASTC, City=London

    ID=NORTS, City=London

    ID=SEVES, City=London

  3. Tekan Enter di jendela konsol untuk menutup aplikasi.

Langkah berikutnya

Topik Panduan: Melakukan Kueri Seluruh Hubungan (C#) berlanjut tempat panduan ini berakhir. Panduan Kueri Di Seluruh Hubungan menunjukkan cara LINQ untuk 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.

Lihat juga