Panduan: Menyimpan data dalam transaksi dalam aplikasi .NET Framework
Catatan
Himpunan data 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. Himpunan data tersebut sangat berguna untuk aplikasi yang mengaktifkan pengguna guna memodifikasi data dan mempertahankan perubahan kembali ke database. Meskipun himpunan data telah terbukti menjadi teknologi yang sangat sukses, sebaiknya aplikasi .NET baru 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.
Panduan ini menunjukkan cara menyimpan data dalam transaksi dengan menggunakan namespace layanan System.Transactions. Dalam panduan ini, Anda akan membuat aplikasi Formulir Windows. Anda akan menggunakan Panduan Konfigurasi Sumber Data untuk membuat himpunan data untuk dua tabel dalam database sampel Northwind. Anda akan menambahkan kontrol terikat data ke formulir Windows, dan Anda akan memodifikasi kode untuk tombol simpan BindingNavigator untuk memperbarui database di dalam TransactionScope.
Prasyarat
Untuk menyelesaikan tutorial ini, Anda memerlukan beban kerja pengembangan desktop .NET dan Penyimpanan data dan pemrosesan yang diinstal di Visual Studio. Untuk menginstalnya, buka penginstal Visual Studio, lalu pilih Ubah(atau Lebih> Ubah) di samping versi Visual Studio yang ingin Anda ubah. Lihat Ubah Visual Studio.
Panduan ini menggunakan SQL Server Express LocalDB dan database sampel Northwind.
Jika Anda tidak memiliki SQL Server Express LocalDB, pasang dari halaman unduhan SQL Server Express, atau melalui Alat Penginstal Visual Studio. Di Alat Penginstal Visual Studio, SQL Server Express LocalDB dapat diinstal sebagai bagian dari beban kerja pengembangan desktop .NET, atau sebagai komponen individual.
Instal database sampel Northwind dengan mengikuti langkah-langkah berikut:
Di Visual Studio, buka jendela SQL Server Object Explorer. (SQL Server Object Explorer dipasang sebagai bagian dari beban kerja Penyimpanan dan pemrosesan data di Alat Penginstal Visual Studio.) Perluas node SQL Server. Klik kanan pada instans LocalDB Anda dan pilih Kueri Baru.
Jendela editor kueri terbuka.
Salin skrip Northwind Transact-SQL ke clipboard Anda. Skrip T-SQL ini membuat database Northwind dari awal dan mengisinya dengan data.
Tempelkan skrip T-SQL ke editor kueri, lalu pilih tombol Jalankan.
Setelah beberapa saat, kueri selesai berjalan dan database Northwind dibuat.
Membuat aplikasi Formulir Windows
Langkah pertama adalah membuat Aplikasi Formulir Windows (.NET Framework).
Di Visual Studio, di menu File, pilih Proyek>Baru.
Perluas Visual C# atau Visual Basic di panel sebelah kiri, lalu pilih Windows Desktop.
Di panel tengah, pilih jenis proyek Aplikasi Formulir Windows.
Beri nama proyek SavingDataInATransactionWalkthrough, lalu pilih OK.
Proyek SavingDataInATransactionWalkthrough dibuat dan ditambahkan ke Penjelajah Solusi.
Untuk membuat sumber data
Langkah ini menggunakan Wizard Konfigurasi Sumber Data untuk membuat sumber data berdasarkan tabel Customers
dan Orders
dalam database sampel Northwind.
Untuk membuka jendela Sumber Data, pada menu Data, pilih Perlihatkan Sumber Data.
Di jendela Sumber Data, pilih Tambahkan Sumber Data Baru untuk memulai Wizard Konfigurasi Sumber Data.
Pada layar Pilih Jenis Sumber Data, pilih Database, lalu pilih Berikutnya.
Pada layar Pilih Koneksi Data Anda lakukan salah satu hal berikut ini:
Jika koneksi data ke database sampel Northwind tersedia di daftar dropdown, pilihlah.
-atau-
Pilih Koneksi Baru untuk meluncurkan kotak dialog Tambahkan/Ubah Koneksi dan buat koneksi ke database Northwind.
Jika database Anda memerlukan kata sandi, pilih opsi untuk menyertakan data sensitif, lalu pilih Berikutnya.
Pada layar Simpan string koneksi ke file Konfigurasi Aplikasi, pilih Berikutnya.
Pada layar Pilih Objek Database Anda, perluas node Tabel.
Pilih tabel
Customers
danOrders
, lalu pilih Selesai.NorthwindDataSet ditambahkan ke proyek Anda dan tabel
Customers
danOrders
muncul di jendela Sumber Data.
Menambahkan kontrol ke formulir
Anda dapat membuat kontrol terikat data dengan menyeret item dari jendela Sumber Data ke formulir Anda.
Di jendela Sumber Data, perluas simpul Pelanggan.
Seret node Pelanggan utama dari jendela Sumber Data ke Form1.
Kontrol DataGridView dan strip alat (BindingNavigator) untuk menavigasi rekaman muncul di formulir. NorthwindDataSet,
CustomersTableAdapter
, BindingSource, dan BindingNavigator muncul di baki komponen.Seret node Pesanan terkait (bukan node Pesanan utama, tetapi node tabel turunan terkait di bawah kolom Faks) ke formulir di bawah CustomersDataGridView.
Muncul DataGridView pada formulir.
OrdersTableAdapter
dan BindingSource muncul di penampan komponen.
Menambahkan referensi ke rakitan System.Transactions
Transaksi menggunakan System.Transactions namespace layanan. Referensi proyek ke rakitan system.transactions tidak ditambahkan secara default, jadi Anda perlu menambahkannya secara manual.
Untuk menambahkan referensi ke file DLL System.Transactions
Pada menu Proyek, pilih Tambahkan Referensi.
Pilih System.Transactions (pada
.NET
tab), lalu pilih OK.Referensi ke System.Transactions ditambahkan ke proyek.
Ubah kode di tombol SaveItem BindingNavigator
Untuk tabel pertama yang dijatuhkan ke formulir Anda, kode ditambahkan secara default ke click
peristiwa tombol simpan pada BindingNavigator. Anda perlu menambahkan kode secara manual untuk memperbarui tabel tambahan apa pun. Untuk panduan ini, kami merefaktor kode penyimpanan yang ada dari penangan aktivitas klik tombol simpan. Kami juga membuat beberapa metode lagi untuk menyediakan fungsionalitas pembaruan tertentu berdasarkan apakah baris perlu ditambahkan atau dihapus.
Untuk mengubah kode penyimpanan yang dibuat secara otomatis
Pilih tombol Simpan pada CustomersBindingNavigator (tombol dengan ikon disket).
Ganti metode
CustomersBindingNavigatorSaveItem_Click
dengan kode berikut:private void customersBindingNavigatorSaveItem_Click(object sender, EventArgs e) { UpdateData(); } private void UpdateData() { this.Validate(); this.customersBindingSource.EndEdit(); this.ordersBindingSource.EndEdit(); using (System.Transactions.TransactionScope updateTransaction = new System.Transactions.TransactionScope()) { DeleteOrders(); DeleteCustomers(); AddNewCustomers(); AddNewOrders(); updateTransaction.Complete(); northwindDataSet.AcceptChanges(); } }
Urutan untuk menyesuaikan perubahan pada data terkait adalah sebagai berikut:
Menghapus catatan turunan. (Dalam hal ini, hapus rekaman dari tabel
Orders
.)Menghapus rekaman induk. (Dalam hal ini, hapus rekaman dari tabel
Customers
.)Sisipkan rekaman induk. (Dalam hal ini, sisipkan rekaman dalam tabel
Customers
.)Sisipkan rekaman turunan. (Dalam hal ini, sisipkan rekaman dalam tabel
Orders
.)
Untuk menghapus pesanan yang sudah ada
Menambahkan metode
DeleteOrders
berikut ke Form1:private void DeleteOrders() { NorthwindDataSet.OrdersDataTable deletedOrders; deletedOrders = (NorthwindDataSet.OrdersDataTable) northwindDataSet.Orders.GetChanges(DataRowState.Deleted); if (deletedOrders != null) { try { ordersTableAdapter.Update(deletedOrders); } catch (System.Exception ex) { MessageBox.Show("DeleteOrders Failed"); } } }
Untuk menghapus pelanggan yang sudah ada
Menambahkan metode
DeleteCustomers
berikut ke Form1:private void DeleteCustomers() { NorthwindDataSet.CustomersDataTable deletedCustomers; deletedCustomers = (NorthwindDataSet.CustomersDataTable) northwindDataSet.Customers.GetChanges(DataRowState.Deleted); if (deletedCustomers != null) { try { customersTableAdapter.Update(deletedCustomers); } catch (System.Exception ex) { MessageBox.Show("DeleteCustomers Failed"); } } }
Untuk menambahkan pelanggan baru
Menambahkan metode
AddNewCustomers
berikut ke Form1:private void AddNewCustomers() { NorthwindDataSet.CustomersDataTable newCustomers; newCustomers = (NorthwindDataSet.CustomersDataTable) northwindDataSet.Customers.GetChanges(DataRowState.Added); if (newCustomers != null) { try { customersTableAdapter.Update(newCustomers); } catch (System.Exception ex) { MessageBox.Show("AddNewCustomers Failed"); } } }
Untuk menambahkan pesanan baru
Menambahkan metode
AddNewOrders
berikut ke Form1:private void AddNewOrders() { NorthwindDataSet.OrdersDataTable newOrders; newOrders = (NorthwindDataSet.OrdersDataTable) northwindDataSet.Orders.GetChanges(DataRowState.Added); if (newOrders != null) { try { ordersTableAdapter.Update(newOrders); } catch (System.Exception ex) { MessageBox.Show("AddNewOrders Failed"); } } }
Jalankan aplikasi
Tekan F5 untuk menjalankan aplikasi.
Konten terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk