Share via


İzlenecek yol: .NET Framework uygulamalarında bir işlemdeki verileri kaydetme

Not

Veri kümeleri 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. Bunlar ö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ümelerinin çok başarılı bir teknoloji olduğu kanıtlanmış olsa da, yeni .NET uygulamalarının Entity Framework Core kullanmasını öneririz. 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, ad alanını kullanarak bir işlemdeki verilerin nasıl kaydedildiği gösterilmektedir System.Transactions . 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ştirme ve Veri depolama ve işleme iş yüklerine ihtiyacınız vardır. Bunları yüklemek için Visual Studio Yükleyicisi açın ve değiştirmek istediğiniz Visual Studio sürümünün yanındaki Değiştir (veya Daha Fazla>Değiştir) öğesini seçin. Bkz. Visual Studio'yu değiştirme.

Bu kılavuzda SQL Server Express LocalDB ve Northwind örnek veritabanı kullanılmaktadır.

  1. 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, 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.

  2. Aşağıdaki adımları izleyerek Northwind örnek veritabanını yükleyin:

    1. Visual Studio'da SQL Server Nesne Gezgini penceresini açın. (SQL Server Nesne Gezgini, Visual Studio Yükleyicisi 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.

    2. Northwind Transact-SQL betiğini panonuza kopyalayın. Bu T-SQL betiği, Northwind veritabanını sıfırdan oluşturur ve verilerle doldurur.

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

  1. Visual Studio'da, Dosya menüsünde Yeni Proje'yi> seçin.

  2. Sol bölmede Visual C# veya Visual Basic'i genişletin, ardından Windows Masaüstü'nü seçin.

  3. Orta bölmede Windows Forms Uygulaması proje türünü seçin.

  4. Projeye SavingDataInATransactionWalkthrough adını verin ve Tamam'ı seçin.

    SavingDataInATransactionWalkthrough projesi oluşturulur ve Çözüm Gezgini 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.

  1. Veri Kaynakları penceresini açmak için Veri menüsünde Veri Kaynaklarını Göster'i seçin.

  2. Veri Kaynağı Yapılandırma Sihirbazı'nı başlatmak için Veri Kaynakları penceresinde Yeni Veri Kaynağı Ekle'yi seçin.

  3. Veri Kaynağı Türü Seçin ekranında Veritabanı'nı ve ardından İleri'yi seçin.

  4. Veri Bağlan ion'ı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ğlan Ekle/Değiştir iletişim kutusunu başlatmak ve Northwind veritabanına bağlantı oluşturmak için Yeni Bağlan ion'u seçin.

  5. Veritabanınız parola gerektiriyorsa, hassas verileri dahil etme seçeneğini belirleyin ve ardından İleri'yi seçin.

  6. bağlantı dizesi Uygulama Yapılandırması dosyasına kaydet ekranında İleri'yi seçin.

  7. Veritabanı Nesnelerinizi Seçin ekranında Tablolar düğümünü genişletin.

  8. ve Orders tablolarını Customers ve ardından Son'u seçin.

    NorthwindDataSet projenize eklenir ve CustomersOrders tablolar Veri Kaynakları penceresinde görünür.

Forma denetim ekleme

Veri Kaynakları penceresindeki öğeleri formunuza sürükleyerek veriye bağlı denetimler oluşturabilirsiniz.

  1. Veri Kaynakları penceresinde Müşteriler düğümünü genişletin.

  2. Ana Müşteriler düğümünü Veri Kaynakları penceresinden Form1'e sürükleyin.

    DataGridView Formda kayıtlarda gezinmek için bir denetim ve araç şeridi (BindingNavigator). Bileşen tepsisinde bir NorthwindDataSet, CustomersTableAdapter, BindingSourceve BindingNavigator görünür.

  3. İ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 OrdersTableAdapter ve 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

  1. Proje menüsünde Başvuru Ekle'yi seçin.

  2. System.Transactions (sekmede.NET) öğesini ve ardından Tamam'ı seçin.

    Projeye System.Transactions başvurusu eklenir.

BindingNavigator'ın SaveItem düğmesindeki kodu değiştirme

Formunuza bırakılan ilk tablo için kod, üzerindeki BindingNavigatorkaydet düğmesinin olayına click 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

  1. CustomersBindingNavigator (disket simgesi bulunan düğme) üzerindeki Kaydet düğmesini seçin.

  2. CustomersBindingNavigatorSaveItem_Click yö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 Orders kayıtları silin.)

  • Üst kayıtları silin. (Bu durumda, tablodaki Customers kayıtları silin.)

  • Üst kayıt ekleme. (Bu durumda, tabloya Customers kayıt ekleyin.)

  • Alt kayıtlar ekleyin. (Bu durumda, tabloya Orders kayıt ekleyin.)

Mevcut siparişleri silmek için

  • Form1'e aşağıdaki DeleteOrders yö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 DeleteCustomers yö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 AddNewCustomers yö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 AddNewOrders yö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'e basın.