Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Sınıf DataSet ve ilgili sınıflar, uygulamaların veritabanıyla bağlantısı kesilirken uygulamaların bellekteki verilerle çalışmasını sağlayan 2000'lerin başlarındaki eski .NET Framework teknolojileridir. Teknolojiler özellikle kullanıcıların verileri değiştirmesine ve değişiklikleri veritabanında kalıcı hale getirebilmesine olanak tanıyan uygulamalar için kullanışlıdır. Veri kümeleri başarısı kanıtlanmış bir teknoloji olsa da, yeni .NET uygulamaları için önerilen yaklaşım Entity Framework Core kullanmaktır. Entity Framework, tablosal verilerle nesne modelleri olarak çalışmak için daha doğal bir yol sağlar ve daha basit bir programlama arabirimine sahiptir.
Bu kılavuzda, System.Transactions ad alanını kullanarak bir işlemdeki verilerin nasıl kaydedileceği gösterilmektedir. Bu kılavuzda bir Windows Forms uygulaması oluşturacaksınız. Veri Kaynağı Yapılandırma Sihirbazı'nı kullanarak Northwind örnek veritabanındaki iki tablo için bir veri kümesi oluşturacaksınız. Bir Windows formuna veri bağlama denetimleri ekleyeceksiniz ve BindingNavigator'ın kaydet düğmesinin kodunu değiştirerek TransactionScope içindeki veritabanını güncelleştireceksiniz.
Önkoşullar
Bu öğreticiyi tamamlamak için Visual Studio'da yüklü .NET masaüstü geliştirmeve Veri depolama ve işleme iş yüklerine ihtiyacınız vardır. Bunları yüklemek için Visual Studio Installer açın ve değiştirmek istediğiniz Visual Studio sürümünün yanındaki Değiştir (veya Daha Fazla >)seçin. Bkz. Visual Studio'yu Değiştir.
Bu kılavuzda SQL Server Express LocalDB ve Northwind örnek veritabanı kullanılmaktadır.
SQL Server Express LocalDB'niz yoksa, SQL Server Express indirme sayfasından veya Visual Studio Yükleyicisi aracılığıyla yükleyin. Visual Studio Yükleyicisi'nde, SQL Server Express LocalDB .NET masaüstü geliştirme iş yükünün bir parçası olarak veya tek bir bileşen olarak yüklenebilir.
Aşağıdaki adımları izleyerek Northwind örnek veritabanını yükleyin:
Visual Studio'da SQL Server Nesne Gezgini penceresini açın. (SQL Server Nesne Gezgini, Visual Studio Yükleyicisi'ndeki Veri depolama ve işleme iş yükünün bir parçası olarak yüklenir.) SQL Server düğümünü genişletin. LocalDB örneğinize sağ tıklayın ve Yeni Sorgu'yu seçin.
Sorgu düzenleyicisi penceresi açılır.
Northwind Transact-SQL betiğini panonuza kopyalayın. Bu T-SQL betiği, Northwind veritabanını sıfırdan oluşturur ve verilerle doldurur.
T-SQL betiğini sorgu düzenleyicisine yapıştırın ve ardından yürüt düğmesini seçin.
Kısa bir süre sonra sorgunun çalışması tamamlanır ve Northwind veritabanı oluşturulur.
Windows Forms uygulaması oluşturma
İlk adım bir Windows Forms Uygulaması (.NET Framework) oluşturmaktır.
Visual Studio'da, Dosya menüsünde Yeni Proje'yi> seçin.
Sol bölmede Visual C# veya Visual Basic'i genişletin, ardından Windows Masaüstü'nü seçin.
Orta bölmede Windows Forms Uygulaması proje türünü seçin.
Projeye SavingDataInATransactionWalkthrough adını verin ve Tamam'ı seçin.
SavingDataInATransactionWalkthrough projesi oluşturulur ve Çözüm Gezgini'ne eklenir.
Veritabanı veri kaynağı oluşturma
Bu adım, Northwind örnek veritabanındaki ve Orders tablolarını temel alan Customers bir veri kaynağı oluşturmak için Veri Kaynağı Yapılandırma Sihirbazı'nı kullanır.
Veri Kaynakları penceresini açmak için Veri menüsünde Veri Kaynaklarını Göster'i seçin.
Veri Kaynağı Yapılandırma Sihirbazı'nı başlatmak için Veri Kaynakları penceresinde Yeni Veri Kaynağı Ekle'yi seçin.
Veri Kaynağı Türü Seçin ekranında Veritabanı'nı ve ardından İleri'yi seçin.
Veri Bağlantınızı seçin ekranında aşağıdakilerden birini yapın:
Açılan listede Northwind örnek veritabanına bir veri bağlantısı varsa seçin.
-veya-
Bağlantı Ekle/Değiştir iletişim kutusunu başlatmak ve Northwind veritabanına bir bağlantı oluşturmak için Yeni Bağlantı'ya tıklayın.
Veritabanınız parola gerektiriyorsa, hassas verileri dahil etme seçeneğini belirleyin ve ardından İleri'yi seçin.
Bağlantı dizesini Uygulama Yapılandırması dosyasına kaydet ekranında İleri'yi seçin.
Veritabanı Nesnelerinizi Seçin ekranında Tablolar düğümünü genişletin.
CustomersveOrderstablolarını seçin, ardından Son'u seçin.NorthwindDataSet projenize eklenir ve
CustomersOrderstablolar Veri Kaynakları penceresinde görünür.
Forma denetim ekleme
Veri Kaynakları penceresindeki öğeleri formunuza sürükleyerek veriye bağlı denetimler oluşturabilirsiniz.
Veri Kaynakları penceresinde Müşteriler düğümünü genişletin.
Ana Müşteriler düğümünü Veri Kaynakları penceresinden Form1'e sürükleyin.
DataGridView Formda kayıtlarda gezinmek için bir denetim ve bir araç şeridi (BindingNavigator) görünür. Bileşen tepsisinde NorthwindDataSet,
CustomersTableAdapter, BindingSource, ve BindingNavigator görünür.İlgili Siparişler düğümünü (ana Siparişler düğümü değil, Faks sütununun altındaki ilgili alt tablo düğümü) CustomersDataGridView altındaki forma sürükleyin.
Formda bir DataGridView görünür. Bir
OrdersTableAdapterve BindingSource bileşen tepsisinde görünür.
System.Transactions derlemesine başvuru ekleme
İşlemler ad alanını System.Transactions kullanır. system.transactions derlemesine yönelik bir proje başvurusu varsayılan olarak eklenmediğinden, bunu el ile eklemeniz gerekir.
System.Transactions DLL dosyasına başvuru eklemek için
Proje menüsünde Başvuru Ekle'yi seçin.
System.Transactions (sekmede
.NET) öğesini ve ardından Tamam'ı seçin.Projeye bir System.Transactions başvurusu eklendi.
BindingNavigator'ın SaveItem düğmesindeki kodu değiştirme
Formunuza bırakılan ilk tablo için, kod click üzerindeki kaydet düğmesinin BindingNavigator olayına varsayılan olarak eklenir. Ek tabloları güncelleştirmek için el ile kod eklemeniz gerekir. Bu izlenecek yol için, var olan kaydetme kodunu kaydet düğmesinin tıklama olay işleyicisinin dışında yeniden düzenleyeceğiz. Ayrıca, satırın eklenmesi veya silinmesi gerekip gerekmediğine bağlı olarak belirli güncelleştirme işlevselliği sağlamak için birkaç yöntem daha oluştururuz.
Otomatik olarak oluşturulan kaydetme kodunu değiştirmek için
CustomersBindingNavigator (disket simgesi bulunan düğme) üzerindeki Kaydet düğmesini seçin.
CustomersBindingNavigatorSaveItem_Clickyöntemini aşağıdaki kod ile değiştirin: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(); } }
İlgili verilerde yapılan değişiklikleri uzlaştırma sırası aşağıdaki gibidir:
Alt kayıtları silin. (Bu durumda, tablodaki
Orderskayıtları silin.)Üst kayıtları silin. (Bu durumda, tablodaki
Customerskayıtları silin.)Ana kayıt ekleyin. (Bu durumda,
Customerstablosuna kayıt ekleyin.)Alt düzey kayıtları ekleyin. (Bu durumda,
Orderstablosuna kayıt ekleyin.)
Mevcut siparişleri silmek için
Form1'e aşağıdaki
DeleteOrdersyöntemi ekleyin: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
Form1'e aşağıdaki
DeleteCustomersyöntemi ekleyin: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
Form1'e aşağıdaki
AddNewCustomersyöntemi ekleyin: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ş eklemek için
Form1'e aşağıdaki
AddNewOrdersyöntemi ekleyin: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 F5 basın.