İzlenecek Yol: Bir İşlemde Veri Kaydetme
Bu kılavuz hareket kullanarak verileri kaydetmek nasıl kullanılacağını göstermektedir System.Transactions ad alanı.Bu örnek kullanır Customers ve Orders Northwind örnek veritabanı tablolarından.
Önkoşullar
Bu kılavuz Northwind örnek veritabanına erişimi gerektirir.Northwind örnek veritabanı kurma hakkında daha fazla bilgi için bkz: Nasıl Yapılır: Örnek Veritabanları Yükleme.
Bir Windows uygulaması oluşturma
İlk adım Windows Uygulaması oluşturmaktır.
Yeni Windows projesi oluşturmak için
Visual Studio, gelen Dosya menüsü, yeni bir Proje.
SavingDataInATransactionWalkthrough proje adı.
Windows Uygulaması'nı seçin ve Tamam'a tıklayın.Daha fazla bilgi için .NET Framework ile İstemci Uygulamaları Geliştirme.
SavingDataInATransactionWalkthrough Proje oluşturulur ve eklenen Çözüm Gezgini.
Veritabanı veri kaynağı oluşturma
Bu adımı kullanan Veri Kaynağı Yapılandırma Sihirbazı dayanan bir veri kaynağı oluşturmak için Customers ve Orders Northwind örnek veritabanındaki tabloları.
Veri kaynağı oluşturmak için
Veri menüsünden Veri Kaynaklarını Göster'i tıklatın.
İçindeki veri kaynakları penceresinde select Yeni veri kaynağı Ekle başlatmak için veri kaynağı Yapılandırma Sihirbazı.
Bir veri Kaynağı Türü Seç sayfasında, Veritabanı'nı seçin ve daha sonra İleri'yi tıklatın.
Üzerinde veri bağlantısı seçin aşağıdakilerden birini sayfa yapın:
Aşağı açılır listede bir veri bağlantısı Northwind örnek veritabanına kullanılabilir değilse, seçin.
-veya-
Seçin Yeni bağlantı başlatmak için Ekle/Değiştir bağlantı iletişim kutusunu ve Northwind veritabanına bağlantı oluşturun.
Veritabanına parola gerekiyorsa, hassas verileri eklemek için bir seçenek belirleyğp İleri'yi tıklatın.
Bağlantı Dizesini Uygulama Yapılandırma Dosyasına Kaydet sayfasında İleri'yi tıklatın.
Veritabanı Nesnenizi Seçin sayfasında Tablolar düğümünü genişletin.
Seçin Customers ve Orders tabloları ve sonra Son.
NorthwindDataSet projenize eklenir ve Customers ve Orders tabloları görünür veri kaynakları pencere.
Formu denetimleri ekleme
Öğeleri sürükleyerek veri ilişkili denetimleri oluşturabilirsiniz veri kaynakları formunuz penceresinden.
Veri oluşturmak için Windows Form denetimlerini bağlı.
Veri Kaynakları penceresinde Customers düğümünü genişletin.
Ana sürükleyin Müşteriler düğümünden veri kaynakları penceresinden Form1.
Bir DataGridView denetimi ve araç şeridi (BindingNavigator) kayıtları gezinmek için formda görünür.Bir NorthwindDataSet, CustomersTableAdapter, BindingSource ve BindingNavigator bileşen alanında görünür.
İlgili sürükleyin Siparişler düğümü (aşağıdaki ilgili alt tablo düğümü Faks sütun, ana Siparişler düğümü) aşağıdaki formu üzerine CustomersDataGridView.
Bir DataGridView formda görünür.Bir OrdersTableAdapter ve BindingSource Bileşen alanı içinde görüntülenir.
System.Transactions derlemesine başvuru ekleme
İşlemler kullanmak System.Transactions ad alanı.El ile eklemeniz gerekir. varsayılan olarak, bir proje system.transactions derlemesine başvuru eklenmedi.
Bir başvuru System.Transactions DLL dosyasına eklemek için
Öğesinden Proje menüsünde seçin Başvuru Ekle.
Seçin System.Transactions (üzerinde .NET sekmesi) tıklatıp Tamam.
Bir başvuru System.Transactions projeye eklenir.
BindingNavigator'ın saveItem düğmesi kodda değiştirme
Varsayılan olarak, formunuz bırakılan ilk tablo için kod eklenir click olay kaydetme düğmesine BindingNavigator.Ek tabloları güncelleştirmek için kod el ile eklemeniz gerekir.Bu örnek için biz kaydetme dışında kod Kaydet mevcut yeniden düzenle düğmenin olay işleyicisi'ı tıklatın ve olup satır eklenen veya silinen uygun olarak belirli güncelleştirme işlevselliği sağlamak için birkaç daha fazla yöntem oluşturun.
Otomatik olarak üretilen kod Kaydet değiştirmek için
Çift Kaydet düğmesini CustomersBindingNavigator (disket simgesiyle düğmesi).
Replace CustomersBindingNavigatorSaveItem_Click aşağıdaki kodla yöntemi:
Private Sub CustomersBindingNavigatorSaveItem_Click() Handles CustomersBindingNavigatorSaveItem.Click UpdateData() End Sub Private Sub UpdateData() Me.Validate() Me.CustomersBindingSource.EndEdit() Me.OrdersBindingSource.EndEdit() Using updateTransaction As New Transactions.TransactionScope DeleteOrders() DeleteCustomers() AddNewCustomers() AddNewOrders() updateTransaction.Complete() NorthwindDataSet.AcceptChanges() End Using End Sub
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(); } }
Sıralama için ilgili verileri değişiklikleri karşılaştırma için aşağıdaki gibidir:
Alt kayıtları silme (Bu durumda, kayıtlarını silmek Orders Tablo)
Üst kaydı sil (Bu durumda, kayıtlarını silmek Customers Tablo)
Üst kayıt ekleme (Bu durumda, kayıtları Ekle Customers Tablo)
Alt kayıt ekleme (Bu durumda, kayıtları Ekle Orders Tablo)
Varolan siparişler silmek için
Aşağıdaki DeleteOrders yöntemine Form1:
Private Sub DeleteOrders() Dim deletedOrders As NorthwindDataSet.OrdersDataTable deletedOrders = CType(NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Deleted), NorthwindDataSet.OrdersDataTable) If Not IsNothing(deletedOrders) Then Try OrdersTableAdapter.Update(deletedOrders) Catch ex As Exception MessageBox.Show("DeleteOrders Failed") End Try End If End Sub
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"); } } }
Mevcut müşterileri silmek için
Aşağıdaki DeleteCustomers yöntemine Form1:
Private Sub DeleteCustomers() Dim deletedCustomers As NorthwindDataSet.CustomersDataTable deletedCustomers = CType(NorthwindDataSet.Customers.GetChanges(Data.DataRowState.Deleted), NorthwindDataSet.CustomersDataTable) If Not IsNothing(deletedCustomers) Then Try CustomersTableAdapter.Update(deletedCustomers) Catch ex As Exception MessageBox.Show("DeleteCustomers Failed" & vbCrLf & ex.Message) End Try End If End Sub
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"); } } }
Yeni müşteriler eklemek için
Aşağıdaki AddNewCustomers yöntemine Form1:
Private Sub AddNewCustomers() Dim newCustomers As NorthwindDataSet.CustomersDataTable newCustomers = CType(NorthwindDataSet.Customers.GetChanges(Data.DataRowState.Added), NorthwindDataSet.CustomersDataTable) If Not IsNothing(newCustomers) Then Try CustomersTableAdapter.Update(newCustomers) Catch ex As Exception MessageBox.Show("AddNewCustomers Failed" & vbCrLf & ex.Message) End Try End If End Sub
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"); } } }
Yeni siparişler eklemek için
Aşağıdaki AddNewOrders yöntemine Form1:
Private Sub AddNewOrders() Dim newOrders As NorthwindDataSet.OrdersDataTable newOrders = CType(NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Added), NorthwindDataSet.OrdersDataTable) If Not IsNothing(newOrders) Then Try OrdersTableAdapter.Update(newOrders) Catch ex As Exception MessageBox.Show("AddNewOrders Failed" & vbCrLf & ex.Message) End Try End If End Sub
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"); } } }
Uygulamayı Çalıştırma
Uygulamayı çalıştırmak için
- Uygulamayı çalıştırmak için F5'e basın.
Ayrıca bkz.
Görevler
Nasıl yapılır: Bir İşlemi Kullanarak Veri Kaydetme
Kavramlar
Oracle Distributed Transactions
System.Transactions Integration with SQL Server
Uygulamanızı Veri Almaya Hazırlama
Visual Studio'da Verilere Denetimler Bağlama
Uygulamanızdaki Verileri Düzenleme