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.
Nota
Kelas DataSet dan kelas terkait adalah teknologi .NET Framework warisan dari awal 2000-an yang memungkinkan aplikasi untuk bekerja dengan data dalam memori saat aplikasi terputus dari database. Teknologi ini sangat berguna untuk aplikasi yang memungkinkan pengguna memodifikasi data dan mempertahankan perubahan kembali ke database. Meskipun himpunan data adalah teknologi yang terbukti berhasil, pendekatan yang direkomendasikan untuk aplikasi .NET baru adalah menggunakan Entity Framework Core. Entity Framework menyediakan cara yang lebih alami untuk bekerja dengan data tabular sebagai model objek, dan memiliki antarmuka pemrograman yang lebih sederhana.
Visual Studio menyediakan alat waktu desain untuk bekerja dengan objek kustom sebagai sumber data di aplikasi Anda. Saat Anda ingin menyimpan data dari database dalam objek yang Anda ikat ke kontrol UI, pendekatan yang disarankan adalah menggunakan Kerangka Kerja Entitas untuk menghasilkan kelas atau kelas. Entity Framework secara otomatis menghasilkan semua kode pelacakan perubahan boilerplate, yang berarti bahwa setiap perubahan pada objek lokal secara otomatis disimpan ke database saat Anda memanggil AcceptChanges pada objek DbSet. Untuk informasi selengkapnya, lihat Dokumentasi Kerangka Kerja Entitas.
Petunjuk / Saran
Pendekatan untuk pengikatan objek dalam artikel ini hanya boleh dipertimbangkan jika aplikasi Anda sudah didasarkan pada himpunan data. Anda juga dapat menggunakan pendekatan ini jika Anda sudah terbiasa dengan himpunan data, dan data yang akan Anda proses bersifat tabular dan tidak terlalu kompleks atau terlalu besar. Untuk contoh yang lebih sederhana, melibatkan pemuatan data langsung ke objek dengan menggunakan DataReader dan memperbarui UI secara manual tanpa pengikatan data, lihat Membuat aplikasi data sederhana dengan menggunakan ADO.NET.
Persyaratan objek
Satu-satunya persyaratan bagi objek kustom untuk bekerja dengan alat desain data di Visual Studio adalah bahwa objek membutuhkan setidaknya satu properti publik.
Umumnya, objek kustom tidak memerlukan antarmuka, konstruktor, atau atribut tertentu untuk bertindak sebagai sumber data untuk aplikasi. Namun, jika Anda ingin menyeret objek dari jendela Sumber Data ke permukaan desain untuk membuat kontrol terikat data, dan jika objek mengimplementasikan ITypedList antarmuka atau IListSource , objek harus memiliki konstruktor default. Jika tidak, Visual Studio tidak dapat membuat instans objek sumber data, dan menampilkan kesalahan saat Anda menyeret item ke permukaan desain.
Contoh penggunaan objek kustom sebagai sumber data
Meskipun ada banyak cara untuk menerapkan logika aplikasi Anda saat bekerja dengan objek sebagai sumber data, untuk database SQL ada beberapa operasi standar yang dapat disederhanakan dengan menggunakan objek TableAdapter yang dihasilkan Visual Studio. Halaman ini menjelaskan cara menerapkan proses standar ini menggunakan TableAdapters. Ini tidak dimaksudkan sebagai panduan untuk membuat objek kustom Anda. Misalnya, Anda biasanya akan melakukan operasi standar berikut terlepas dari implementasi spesifik objek Anda, atau logika aplikasi:
Memuat data ke dalam objek (biasanya dari database).
Membuat kumpulan objek yang ditik.
Menambahkan objek ke dan menghapus objek dari koleksi.
Menampilkan data objek kepada pengguna pada formulir.
Mengubah/mengedit data dalam objek.
Menyimpan data dari objek kembali ke database.
Memuat data ke dalam objek
Untuk contoh ini, Anda memuat data ke dalam objek Anda dengan menggunakan TableAdapters. Secara default, TableAdapters dibuat dengan dua jenis metode yang mengambil data dari database dan mengisi tabel data.
Metode
TableAdapter.Fillmengisi tabel data yang ada dengan data yang dikembalikan.Metode
TableAdapter.GetDatamengembalikan tabel data baru yang sudah diisi dengan data.
Cara termudah untuk memuat objek kustom Anda dengan data adalah dengan memanggil metode TableAdapter.GetData, mengulangi seluruh baris dalam tabel data hasil pengembalian, dan mengisi setiap objek dengan nilai dari setiap baris. Anda dapat membuat GetData metode yang mengembalikan tabel data terisi untuk kueri apa pun yang ditambahkan ke TableAdapter.
Nota
Visual Studio memberi nama kueri Fill TableAdapter dan GetData secara default, tetapi Anda dapat mengubah nama tersebut menjadi nama metode yang valid.
Contoh berikut menunjukkan cara mengulang baris dalam tabel data, dan mengisi objek dengan data:
private void LoadCustomers()
{
NorthwindDataSet.CustomersDataTable customerData =
customersTableAdapter1.GetTop5Customers();
foreach (NorthwindDataSet.CustomersRow customerRow in customerData)
{
Customer currentCustomer = new Customer();
currentCustomer.CustomerID = customerRow.CustomerID;
currentCustomer.CompanyName = customerRow.CompanyName;
if (customerRow.IsAddressNull() == false)
{
currentCustomer.Address = customerRow.Address;
}
if (customerRow.IsCityNull() == false)
{
currentCustomer.City = customerRow.City;
}
if (customerRow.IsContactNameNull() == false)
{
currentCustomer.ContactName = customerRow.ContactName;
}
if (customerRow.IsContactTitleNull() == false)
{
currentCustomer.ContactTitle = customerRow.ContactTitle;
}
if (customerRow.IsCountryNull() == false)
{
currentCustomer.Country = customerRow.Country;
}
if (customerRow.IsFaxNull() == false)
{
currentCustomer.Fax = customerRow.Fax;
}
if (customerRow.IsPhoneNull() == false)
{
currentCustomer.Phone = customerRow.Phone;
}
if (customerRow.IsPostalCodeNull() == false)
{
currentCustomer.PostalCode = customerRow.PostalCode;
}
if (customerRow.IsRegionNull() == false)
{
currentCustomer.Region = customerRow.Region;
}
LoadOrders(currentCustomer);
customerBindingSource.Add(currentCustomer);
}
}
Membuat kumpulan objek yang ditik
Anda dapat membuat kelas koleksi untuk objek Anda, atau menggunakan koleksi yang ditik yang secara otomatis disediakan oleh komponen BindingSource.
Saat Anda membuat kelas koleksi kustom untuk objek, kami sarankan Anda mewarisi dari BindingList<T>. Kelas generik ini menyediakan fungsionalitas untuk mengelola koleksi Anda, serta kemampuan untuk menaikkan peristiwa yang mengirim pemberitahuan ke infrastruktur pengikatan data di Windows Forms.
Koleksi yang dihasilkan secara otomatis dalam BindingSource menggunakan BindingList<T> untuk koleksi terketikannya. Jika aplikasi Anda tidak memerlukan fungsionalitas tambahan, Anda dapat mempertahankan koleksi Anda dalam BindingSource. Untuk informasi selengkapnya, lihat properti BindingSource dari kelas List.
Nota
Jika koleksi Anda memerlukan fungsionalitas yang tidak disediakan oleh implementasi BindingList<T>dasar , Anda harus membuat koleksi kustom sehingga Anda dapat menambahkan ke kelas sesuai kebutuhan.
Kode berikut menunjukkan cara membuat kelas untuk koleksi objek Order yang bertipe kuat.
/// <summary>
/// A collection of Orders
/// </summary>
public class Orders: System.ComponentModel.BindingList<Order>
{
// Add any additional functionality required by your collection.
}
Menambahkan objek ke koleksi
Anda menambahkan objek ke koleksi dengan memanggil Add metode kelas koleksi kustom Anda atau dari BindingSource.
Nota
Metode Add ini secara otomatis disediakan untuk koleksi kustom Anda ketika Anda mewarisi dari BindingList<T>.
Kode berikut menunjukkan cara menambahkan objek ke koleksi yang ditik dalam BindingSource:
Kode berikut memperlihatkan cara menambahkan objek ke koleksi bertipe yang mewarisi dari BindingList<T>:
Nota
Dalam contoh ini, Orders kumpulan adalah properti dari objek Customer.
Menghapus objek dari koleksi
Anda menghapus objek dari koleksi dengan memanggil Remove atau RemoveAt metode kelas koleksi kustom Anda atau dari BindingSource.
Nota
Metode Remove dan RemoveAt secara otomatis disediakan untuk koleksi kustom Anda ketika Anda mewarisi dari BindingList<T>.
Kode berikut menunjukkan cara menemukan dan menghapus objek dari koleksi yang BindingSource ditik dalam dengan RemoveAt metode :
int customerIndex = customerBindingSource.Find("CustomerID", "ALFKI");
customerBindingSource.RemoveAt(customerIndex);
Menampilkan data objek kepada pengguna
Untuk menampilkan data dalam objek kepada pengguna, buat sumber data objek menggunakan wizard Konfigurasi Sumber Data , lalu seret seluruh objek atau properti individual ke formulir Anda dari jendela Sumber Data .
Mengubah data dalam objek
Untuk mengedit data dalam objek kustom yang terikat data ke kontrol Windows Forms, cukup edit data dalam kontrol terikat (atau langsung di properti objek). Arsitektur pengikatan data memperbarui data dalam objek.
Jika aplikasi Anda memerlukan pelacakan perubahan dan pengembalian perubahan yang diusulkan ke nilai aslinya, maka Anda harus menerapkan fungsionalitas ini dalam model objek Anda. Untuk contoh bagaimana tabel data melacak perubahan yang diusulkan, lihat DataRowState, , HasChangesdan GetChanges.
Menyimpan data dalam objek kembali ke database
Simpan data kembali ke database dengan meneruskan nilai dari objek Anda ke metode DBDirect TableAdapter.
Visual Studio membuat metode DBDirect yang dapat dijalankan langsung terhadap database. Metode ini tidak memerlukan objek Himpunan Data atau DataTable.
| Metode TableAdapter DBDirect | Deskripsi |
|---|---|
TableAdapter.Insert |
Menambahkan rekaman baru ke database, memungkinkan Anda meneruskan nilai kolom individual sebagai parameter metode. |
TableAdapter.Update |
Memperbarui rekaman yang ada dalam database. Metode Pembaruan mengambil nilai kolom asli dan baru sebagai parameter metode. Nilai asli digunakan untuk menemukan rekaman asli, dan nilai baru digunakan untuk memperbarui rekaman tersebut. Metode TableAdapter.Update ini juga digunakan untuk menyesuaikan perubahan dalam himpunan data ke dalam database, dengan mengambil DataSet, DataTable, DataRow, atau array DataRow sebagai parameter metode. |
TableAdapter.Delete |
Menghapus catatan yang sudah ada dari database berdasarkan nilai kolom asli yang diteruskan sebagai parameter fungsi. |
Untuk menyimpan data dari kumpulan objek, lakukan perulangan pada kumpulan objek (misalnya, menggunakan perulangan for-next). Kirim nilai untuk setiap objek ke database dengan menggunakan metode DBDirect TableAdapter.
Contoh berikut menunjukkan cara menggunakan TableAdapter.Insert metode DBDirect untuk menambahkan pelanggan baru langsung ke database:
private void AddNewCustomers(Customer currentCustomer)
{
customersTableAdapter.Insert(
currentCustomer.CustomerID,
currentCustomer.CompanyName,
currentCustomer.ContactName,
currentCustomer.ContactTitle,
currentCustomer.Address,
currentCustomer.City,
currentCustomer.Region,
currentCustomer.PostalCode,
currentCustomer.Country,
currentCustomer.Phone,
currentCustomer.Fax);
}